<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Serabe Reloaded &#187; Comparativas</title>
	<atom:link href="http://www.serabe.com/category/programacion/comparativas/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.serabe.com</link>
	<description>Conecto ergo sum. Non conecto ergo urgueo.</description>
	<lastBuildDate>Sun, 09 Oct 2011 21:30:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Finlandia.</title>
		<link>http://www.serabe.com/2008/01/18/finlandia/</link>
		<comments>http://www.serabe.com/2008/01/18/finlandia/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 23:17:05 +0000</pubDate>
		<dc:creator>Serabe</dc:creator>
				<category><![CDATA[Anti-GOTAM]]></category>
		<category><![CDATA[Comparativas]]></category>

		<guid isPermaLink="false">http://www.serabe.com/2008/01/18/finlandia/</guid>
		<description><![CDATA[Tened miedo. Tened mucho miedo. Historia, Segunda Guerra Mundial &#160;]]></description>
			<content:encoded><![CDATA[<p><a href="http://chickencrap.com/images/1472.jpg"  title="Imagen que demuestra que hay que temer a Finlandia.">Tened miedo. Tened mucho miedo.</a></p>
<div class="posttagsblock"><a href="http://technorati.com/tag/Historia"  rel="tag">Historia</a>, <a href="http://technorati.com/tag/Segunda%20Guerra%20Mundial"  rel="tag">Segunda Guerra Mundial</a></div>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Finlandia. on Serabe Reloaded',url: 'http://www.serabe.com/2008/01/18/finlandia/',contentID: 'post-134',suggestTags: '',providerName: 'Serabe Reloaded',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" title="Finlandia." alt="article clipper Finlandia." />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.serabe.com%2F2008%2F01%2F18%2Ffinlandia%2F&amp;title=Finlandia." id="wpa2a_2"><img src="http://www.serabe.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="share save 171 16 Finlandia."  title="Finlandia." /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.serabe.com/2008/01/18/finlandia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparativa I: Cliente en Ruby</title>
		<link>http://www.serabe.com/2006/10/30/comparativa-i-cliente-en-ruby/</link>
		<comments>http://www.serabe.com/2006/10/30/comparativa-i-cliente-en-ruby/#comments</comments>
		<pubDate>Sun, 29 Oct 2006 23:18:49 +0000</pubDate>
		<dc:creator>Serabe</dc:creator>
				<category><![CDATA[Comparativas]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.serabe.com/2006/10/30/comparativa-i-cliente-en-ruby/</guid>
		<description><![CDATA[Pasamos de Java a Ruby, un lenguaje que a pesar de ser aproximadamente tan viejo como el primero, aÃºn sigue siendo desconocido por algunos europeos. Hace poco ha tenido un auge en el viejo continente gracias, en gran medida, a RubyOnRails. Puesto que vamos a necesitar realizar conexiones, lo primero es: require 'socket' Acto seguido, [...]]]></description>
			<content:encoded><![CDATA[<p>Pasamos de Java a <a href="http://www.ruby-lang.org/en/" title="PÃ¡gina oficial de Ruby (inglÃ©s)" >Ruby</a>, un lenguaje que a pesar de ser aproximadamente tan viejo como el primero, aÃºn sigue siendo desconocido por algunos europeos. Hace poco ha tenido un auge en el viejo continente gracias, en gran medida, a <a href="http://www.rubyonrails.org.es/" title="PÃ¡gina oficial en castellano." >RubyOnRails</a>.</p>
<p>Puesto que vamos a necesitar realizar conexiones, lo primero es:</p>
<p><code>require 'socket'</code></p>
<p>Acto seguido, se define el mÃ©todo <em>mensaje_aleatorio</em>:</p>
<p><code>def mensaje_aleatorio<br />
msg = ["Hola, Mundo","MelÃ³n.","Larga y prÃ³spera vida.","La Quinta Raza.","So long, and thanks for all the fish.","Spain is different.", "Com va aixÃ²?","Bona tarda."]<br />
msg[rand(msg.length)]<br />
end</code></p>
<p>Y ahora llega la magia Ruby. Para crear diez hilos diferentes simplemente se utiliza el mÃ©todo <em>times</em> y la clase <em>Thread</em>:</p>
<p><code>num_hilos = 10<br />
num_hilos.times do |i|<br />
Thread.start do</code></p>
<p>En Ã©l, se crea un bucle infinito en el que se conecta al servidor (simplemente con <em>TCPSocket.new(servidor,puerto)</em> ), envÃ­a el mensaje y espera la respuesta, comprobando que es el texto enviado.</p>
<p><code>while(true)<br />
puts "Abriendo socket #{j}"<br />
begin<br />
socket = TCPSocket.new("localhost",7777)<br />
puts "Abierto socket #{j}"<br />
s = mensaje_aleatorio<br />
socket.puts s<br />
puts "Enviado \"#{s}\" en #{j}"<br />
puts (s == (s1=socket.gets().strip())) ? "Correcto" : "FallÃ³\nEsperado: #{s}\nDevuelto: #{s1}"<br />
rescue Exception => bang<br />
puts bang.to_s<br />
ensure<br />
socket.close unless socket.nil?<br />
end<br />
end</code></p>
<p>Ya, por Ãºltimo y fuera del mÃ©todo <em>times</em>,  se crea un bucle infinito para evitar que termine el script sin hacer lo que se le pide.</p>
<p><a href="http://www.serabe.com/src/EchoClient.rb" title="CÃ³digo del Cliente en Ruby" >AquÃ­ </a>el cÃ³digo completo.</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Comparativa I: Cliente en Ruby on Serabe Reloaded',url: 'http://www.serabe.com/2006/10/30/comparativa-i-cliente-en-ruby/',contentID: 'post-28',suggestTags: '',providerName: 'Serabe Reloaded',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" title="Comparativa I: Cliente en Ruby" alt="article clipper Comparativa I: Cliente en Ruby" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.serabe.com%2F2006%2F10%2F30%2Fcomparativa-i-cliente-en-ruby%2F&amp;title=Comparativa%20I%3A%20Cliente%20en%20Ruby" id="wpa2a_4"><img src="http://www.serabe.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="share save 171 16 Comparativa I: Cliente en Ruby"  title="Comparativa I: Cliente en Ruby" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.serabe.com/2006/10/30/comparativa-i-cliente-en-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparativa I: Servidor en Java</title>
		<link>http://www.serabe.com/2006/10/12/comparativa-i-servidor-en-java/</link>
		<comments>http://www.serabe.com/2006/10/12/comparativa-i-servidor-en-java/#comments</comments>
		<pubDate>Thu, 12 Oct 2006 20:28:07 +0000</pubDate>
		<dc:creator>Serabe</dc:creator>
				<category><![CDATA[Comparativas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.serabe.com/2006/10/12/comparativa-i-servidor-en-java/</guid>
		<description><![CDATA[Segunda entrega de esta comparativa. Le toca el turno al servidor echo. Este servidor constarÃ¡ de dos clases: EchoServer, la clase pÃºblica con el mÃ©todo main, y EchoConnection, que extiende la clase Thread y es la que realiza la mayor parte del trabajo. EchoServer. AquÃ­ nos encontramos el mÃ©todo main(), el cual es muy, pero [...]]]></description>
			<content:encoded><![CDATA[<p>Segunda entrega de esta comparativa. Le toca el turno al servidor echo. Este servidor constarÃ¡ de dos clases: <em>EchoServer</em>, la clase pÃºblica con el mÃ©todo <em>main</em>, y <em>EchoConnection</em>, que extiende la clase <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html" title="API" >Thread</a> y es la que realiza la mayor parte del trabajo.</p>
<p><strong>EchoServer.</strong></p>
<p>AquÃ­ nos encontramos el mÃ©todo <em>main()</em>, el cual es muy, pero que muy simple:</p>
<p><code>public static final void main(String[] args){</code><code><br />
new EchoServer();</code><code><br />
}</code></p>
<p>El constructor de la clase es un poco mÃ¡s interesante, con Ã©l se explicarÃ¡ el funcionamiento bÃ¡sico de la clase <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html" title="API de Java" >ServerSocket</a> del paquete <em>java.net</em>.</p>
<p><code>int port = 7777;<br />
try{<br />
ServerSocket server = new ServerSocket(port);<br />
System.out.println("Servidor a la escucha en el puerto: "+port);</code></p>
<p>El constructor de la  clase <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html" title="API de Java" >ServerSocket</a> recibe como parÃ¡metro el nÃºmero del puerto en el que ha de escuchar. En el siguiente trozo de cÃ³digo se crea un bucle infinito y se lanzan hilos que manejen las peticiones recibidas. Para ello se utiliza el mÃ©todo <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html#accept()" title="API de Java" ><em>accept()</em></a> de la clase <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/ServerSocket.html" title="API de Java" >ServerSocket</a>. Este mÃ©todo espera una conexiÃ³n y devuelve el objeto <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html" title="API de Java" >Socket</a> que la representa. Finalmente se capturan las excepciones.<br />
<code> while(true) new EchoConnection(server.accept());<br />
}catch(Exception e){<br />
System.out.println("Error en el servidor.\n"+e.toString());<br />
}</code></p>
<p><strong>EchoConnection.</strong></p>
<p>La clase <em>EchoConnection</em> extiende la clase <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html" title="API de Java" >Thread</a> y contiene dos variables estÃ¡ticas: <em>connections</em> y <em>visits</em>. Estas variables sirven para contabilizar el nÃºmero de clientes totales y el de clientes conectados actualmente. Por otra parte, se declara una variable privada <em>socket</em>, en la que se almacena la conexiÃ³n pasada al constructor. Dicho constructor, consta de la asignaciÃ³n del socket recibido al privado y de la sentencia que inicia el hilo (<em>this.start()</em>).</p>
<p>El Ãºltimo mÃ©todo a comentar es el mÃ©todo run(). Dicho mÃ©todo es rÃ¡pido de explicar. En primer lugar, se aumenta el nÃºmero de conectados y el de las <em>visitas</em>:</p>
<p><code>EchoConnection.connections++;<br />
int numCliente = ++EchoConnection.visits;</code></p>
<p>DespuÃ©s se capturan los flujos de entrada y de salida:</p>
<p><code>BufferedReader entrada = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));<br />
PrintWriter salida = new PrintWriter(new OutputStreamWriter(this.socket.getOutputStream()),true);</code></p>
<p>Ahora se ha de realizar lo que se supone que debe hacer. Recibir una cadena&#8230;</p>
<p><code>String cadena = entrada.readLine();</code></p>
<p>&#8230;y reenviarla:</p>
<p><code>salida.println(cadena);</code></p>
<p>Para terminar, se cierran los flujos y el socket:</p>
<p><code>entrada.close();<br />
salida.close();<br />
this.socket.close();</code></p>
<p>DespuÃ©s se capturan las excepciones y en el finally se resta 1 al nÃºmero de conectados.</p>
<p>El cÃ³digo completo se puede encontrar <a href="http://www.serabe.com/src/EchoServer.java" title="CÃ³digo Fuente" >aquÃ­</a>.</p>
<p><strong>Nota:</strong>  el cÃ³digo no es todo lo limpio que deberÃ­a ser. Todos los cierres deberÃ­an ir en el <em>finally</em>, por ejemplo.</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Comparativa I: Servidor en Java on Serabe Reloaded',url: 'http://www.serabe.com/2006/10/12/comparativa-i-servidor-en-java/',contentID: 'post-23',suggestTags: '',providerName: 'Serabe Reloaded',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" title="Comparativa I: Servidor en Java" alt="article clipper Comparativa I: Servidor en Java" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.serabe.com%2F2006%2F10%2F12%2Fcomparativa-i-servidor-en-java%2F&amp;title=Comparativa%20I%3A%20Servidor%20en%20Java" id="wpa2a_6"><img src="http://www.serabe.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="share save 171 16 Comparativa I: Servidor en Java"  title="Comparativa I: Servidor en Java" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.serabe.com/2006/10/12/comparativa-i-servidor-en-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparativa I: Cliente en Java.</title>
		<link>http://www.serabe.com/2006/10/01/comparativa-i-cliente-en-java/</link>
		<comments>http://www.serabe.com/2006/10/01/comparativa-i-cliente-en-java/#comments</comments>
		<pubDate>Sun, 01 Oct 2006 21:02:40 +0000</pubDate>
		<dc:creator>Serabe</dc:creator>
				<category><![CDATA[Comparativas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.serabe.com/2006/10/01/comparativa-i-cliente-en-java/</guid>
		<description><![CDATA[En primer lugar, decir que no es un cliente &#8220;echo&#8221;, simplemente es un programita que nos pruebe que el servidor, lo que realmente interesa. El cliente en sÃ­, es sencillo a mÃ¡s no poder: crea una cantidad de hilos cada uno de los cuales pilla un mensaje aleatorio, lo envÃ­a y comprueba que lo recibido [...]]]></description>
			<content:encoded><![CDATA[<p>En primer lugar, decir que no es un cliente &#8220;echo&#8221;, simplemente es un programita que nos pruebe que el servidor, lo que realmente interesa.</p>
<p>El cliente en sÃ­, es sencillo a mÃ¡s no poder: crea una cantidad de hilos cada uno de los cuales pilla un mensaje aleatorio, lo envÃ­a y comprueba que lo recibido es igual al enviado. Esto serÃ¡ asÃ­ para el resto de lenguajes, por lo que no lo volverÃ© a escribir (que me canso).</p>
<p>Empecemos a ver cÃ³digo. Una vista previa del cÃ³digo fuente (se puede descargar <a href="http://www.serabe.com/src/EchoClient.java" title="CÃ³digo fuente" >aquÃ­</a>) nos desvelarÃ¡ que consta de tres clases (sÃ³lo una de ellas es pÃºblica, por lo que sÃ³lo necesitaremos un archivo): <em>EchoClient</em>, <em>EchoClientThread</em> y <em>Mensaje</em>. Comentaremos primero las dos primeras, por ser las mÃ¡s cortas y despuÃ©s la segunda, por ser la que realiza todo el trabajo.</p>
<p><strong>EchoClient.</strong></p>
<p>La clase <em>EchoClient</em> es pÃºblica y consta de una variable estÃ¡tica (el lÃ­mite de hilos), <em>limite</em>, y el mÃ©todo main. Dicho mÃ©todo sÃ³lo consta de una lÃ­nea de cÃ³digo, la cual lanza tantos hilos como  lo indique la variable estÃ¡tica:</p>
<p><code>for(int i=0; i < EchoClient.limite; i++) new EchoClientThread();</code></p>
<p><strong>Mensaje.</strong></p>
<p>La clase <em>Mensaje</em> sÃ³lo contiene un mÃ©todo estÃ¡tico:</p>
<p><code>public static String aleatorio(){<br />
String[] mensajes = {"Hola, Mundo.","MelÃ³n.","Larga y prÃ³spera vida.","La Quinta Raza.","So long, and thanks for all the fish.","Spain is different.", "Com va aixÃ²?","Bona tarda."};<br />
return mensajes[ (int) Math.round(Math.floor(Math.random() * mensajes.length)) ];<br />
}</code></p>
<p>En la primera lÃ­nea se crea un array de String con diferentes mensajes. En el segundo se genera un nÃºmero aleatorio y se coge ese elemento del array.</p>
<p><strong>EchoClientThread.</strong></p>
<p>Esta clase extiende de <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html" title="API de Java" >Thread</a>. Su constructor simplemente llama al constructor padre e inicia el hilo. El mÃ©todo <em>run()</em> simplemente tiene un bucle infinito que llama una y otra vez el mÃ©todo <em>conectar()</em>. Este mÃ©todo es el interesante, aparte de largo, por lo que vayamos por partes:</p>
<p><code>int port = 7777;<br />
String server = "localhost";</code></p>
<p>Declaramos dos variables, la primera es el puerto y la segunda el servidor al que nos conectaremos. Ahora entramos en un bloque <em>try</em>:</p>
<p><code>Socket s = new Socket(server,port);<br />
BufferedReader entrada = new BufferedReader(new InputStreamReader(s.getInputStream()));<br />
PrintWriter salida = new PrintWriter(new OutputStreamWriter(s.getOutputStream()),true);</code></p>
<p>AquÃ­ creamos el socket al servidor y puerto indicados anteriormente. DespuÃ©s se capturan los flujos de entrada y de salida.</p>
<p><code>String mensaje = Mensaje.aleatorio();<br />
salida.println(mensaje);</code></p>
<p>Creamos un mensaje aleatorio y se envÃ­a al servidor.</p>
<p><code>String cadena = entrada.readLine();<br />
System.out.println(cadena.equals(mensaje));</code></p>
<p>Se recoge la respuesta del servidor y se imprime <em>true</em> si es lo enviado o <em>false</em> si es distinto. Por Ãºltimo se cierra la conexiÃ³n:</p>
<p><code>s.close();</code></p>
<p>Y se capturan los errores. TÃ©cnicamente el Ãºltimo <em>close()</em> tendrÃ­a que ir en un finally, etc. pero como ejemplo va bien. Ahora ya sÃ³lo se necesita compilarlo. PrÃ³ximamente, el servidor.</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Comparativa I: Cliente en Java. on Serabe Reloaded',url: 'http://www.serabe.com/2006/10/01/comparativa-i-cliente-en-java/',contentID: 'post-21',suggestTags: '',providerName: 'Serabe Reloaded',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" title="Comparativa I: Cliente en Java." alt="article clipper Comparativa I: Cliente en Java." />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.serabe.com%2F2006%2F10%2F01%2Fcomparativa-i-cliente-en-java%2F&amp;title=Comparativa%20I%3A%20Cliente%20en%20Java." id="wpa2a_8"><img src="http://www.serabe.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="share save 171 16 Comparativa I: Cliente en Java."  title="Comparativa I: Cliente en Java." /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.serabe.com/2006/10/01/comparativa-i-cliente-en-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparativa I: IntroducciÃ³n</title>
		<link>http://www.serabe.com/2006/09/28/comparativa-i-introduccion/</link>
		<comments>http://www.serabe.com/2006/09/28/comparativa-i-introduccion/#comments</comments>
		<pubDate>Wed, 27 Sep 2006 22:51:23 +0000</pubDate>
		<dc:creator>Serabe</dc:creator>
				<category><![CDATA[Comparativas]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.serabe.com/2006/09/28/comparativa-i-introduccion/</guid>
		<description><![CDATA[La primera comparativa consistirÃ¡ en la creaciÃ³n de un servidor y un cliente, ambos multihilo, del protocolo echo en tres lenguajes de programaciÃ³n: Java, Ruby y C# (utilizando el Proyecto Mono). IntroducciÃ³n: el protocolo echo. El protocolo echo es muy (y cuando digo muy, me refiero a muy) sencillo: simplemente devuelve todo los datos enviados [...]]]></description>
			<content:encoded><![CDATA[<p>La primera comparativa consistirÃ¡ en la creaciÃ³n de un servidor y un cliente, ambos multihilo, del protocolo <em>echo</em> en tres lenguajes de programaciÃ³n: <a rel="nofollow" href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java" title="Wikipedia" >Java</a>, <a rel="nofollow" href="http://es.wikipedia.org/wiki/Ruby" title="Wikipedia" >Ruby</a> y <a rel="nofollow" href="http://es.wikipedia.org/wiki/C_Sharp" title="Wikipedia" >C#</a> (utilizando el <a rel="nofollow" href="http://es.wikipedia.org/wiki/Proyecto_Mono" title="Wikipedia" >Proyecto Mono</a>).</p>
<p><strong>IntroducciÃ³n: el protocolo <em>echo</em>.</strong></p>
<p>El protocolo <em>echo</em> es muy (y cuando digo muy, me refiero a <em>muy</em>) sencillo: simplemente devuelve todo los datos enviados al servidor sin modificaciÃ³n alguna. Fue utilizado para probar redes IP, siendo sustituido por <a rel="nofollow" href="http://es.wikipedia.org/wiki/Ping" title="Wikipedia" >ping</a> y <a rel="nofollow" href="http://es.wikipedia.org/wiki/Traceroute" title="Wikipedia" >traceroute</a>.</p>
<p>El puerto, tanto <a rel="nofollow" href="http://es.wikipedia.org/wiki/TCP" title="Wikipedia" >TCP</a> como <a rel="nofollow" href="http://es.wikipedia.org/wiki/UDP" title="Wikipedia" >UDP</a> es el nÃºmero 7.</p>
<p><em><strong>Fuente:</strong></em> <a rel="nofollow" href="http://en.wikipedia.org/wiki/ECHO_protocol" title="Wikipedia" >Wikipedia</a>.</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Comparativa I: IntroducciÃ³n on Serabe Reloaded',url: 'http://www.serabe.com/2006/09/28/comparativa-i-introduccion/',contentID: 'post-18',suggestTags: '',providerName: 'Serabe Reloaded',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" title="Comparativa I: IntroducciÃ³n" alt="article clipper Comparativa I: IntroducciÃ³n" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.serabe.com%2F2006%2F09%2F28%2Fcomparativa-i-introduccion%2F&amp;title=Comparativa%20I%3A%20Introducci%C3%83%C2%B3n" id="wpa2a_10"><img src="http://www.serabe.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="share save 171 16 Comparativa I: IntroducciÃ³n"  title="Comparativa I: IntroducciÃ³n" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.serabe.com/2006/09/28/comparativa-i-introduccion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

