Professional Documents
Culture Documents
Arquitectura Cliente HTML PDF
Arquitectura Cliente HTML PDF
c
cc
c
c
ccc
c
cc
c
c
c !cc"#c$c
c
!%&c
c'(c)(*c
+*&c,-c
c.*c
+cc/#cc
"(c"(c
c!c
!(c(cc0cc
!(c1
c 2c
c
,3,4,4*c
c
_
!"
!"! #
$
%
&&'
! (
)*
+' *
,
-
.
*
/,
0
(
)
/
*-
)1!"-
2%
!
2 %
%
3
+
)+31
+4' +
3% %-! +3
2
%
0
+3!
!"
5
/
!
/
%
!
(
%4
+
(
2 6 )6
,
- 71 ) 7
1-!
2
02
%4
+
)///!
8
!-3
9::9(
8;;<5
2
)=
///!
!>
>
>
8;;<!-!
3
%
?
(
%
!
)
?
- 9!:
]
Permitir que un proceso pueda enviar o recibir datos a través de la red.
O
Es un método para que aplicaciones situadas en distintos ordenadores (o no,
pueden comunicarse perfectamente aplicaciones situadas en el mismo ordenador)
puedan comunicarse. Para ello, se necesita la IP, un Puerto y un Protocolo.
Para indicar que queremos trabajar con sockets, en consola, tenemos que agregar
la siguientes lineas en el Using:
Código:
a
a
Código:
!"#
Código:
m] Aunque se trabaje con numeros, esos numeros de la IP se tienen que pasar
a IPAddress, ya que como int no lo va a tomar.
Donde direccion es lo que habiamos conseguido antes con IPAddress, y en puerto
le ponemos un int que queramos, por ejemplo:
Código:
$%
&'()*+
Código:
%
,
%
&
-$
&
-$
-$
Es el tipo de socket, hay varios tipos, para mas información
sobre estos consultad la informacion que les da el entorno de programación.
Es el potocolo que se usara, tambien hay vario, para mas
informacion consulten el entorno de programación.
Código:
.$
'""
Código:
$
Esta línea indica que el servidor queda esperando una llamada para luego
aceptarla.
Código:
byte[] bytes = new byte[1024]; //Declaramos un array de bytes de longitud
1024 int count;
String data = ""; //Declaramos data, que sera donde se almacenaran los datos
do //Bucle Do/While
{
count = handler.Receive(bytes); //Recibimos los datos enviados y lo
guardamos en cout.
data = System.Text.Encoding.ASCII.GetString(bytes, 0, count); //Lo
codificamos a cadena (ya que se envian como bytes)
if (data != "exit\n") //Mientras lo recibido no sea exit + \n (es decir, exit
+ Intro, ya que intro tambien se envia)
{
Console.Write("Se a recibido: {0}", data); //Mostramos lo recibido pro
pantalla
}
} while (data != "exit\n"); //Mientras lo recibido no sea exit + Intro se
continua el bucle, si recibimos exit + intro, salimos del bucle
#% &]
recv = sock.Receive(dataSize, 0, 4,
SocketFlags.None);//recibimos el tamaño
size = BitConverter.ToInt32(dataSize, 0);//lo pasamos a un
entero
dataLeft = size; //asigamos lo que nos falta recibir
byte[> data = new byte[size>; //creamos un array de byte[> del
tamaño del mensaje
El servidor lo que hará es que cuando reciba una conexión enviara un mensaje de
bienvenida al cliente y luego esperara mensajes del cliente.. el cliente lo que hará
es leer el mensaje de bienvenida y luego esperar a que el usuario escriba mensajes
para enviarlos
#% &]
Ahora el código del cliente debe de ser igual al del servidor con la única diferencia
que en el constructor Main las cosas serán diferentes. En código del Constructor
del cliente debe ser de la siguiente manera :
#% &]
try
{
server.Connect(ipep);//Intentamos conectar el socket
Console.WriteLine("Conectado con el servidor {0}",
ipep.Address);
}
catch (SocketException)
{
//Si hay excepcion imprimimos error y salimos del programa
con return
Console.WriteLine("No se pudo conectar con el servidor {0}",
ipep.Address);
return;
}
try
{
data = ReceiveData(server); //Recibimos la bienvenida del
servidor
string stringData = Encoding.ASCII.GetString(data);
Console.WriteLine(stringData);
}
catch (SocketException)
{
//Si hay error imprimios y nos salimos por que no hay
conexion
Console.WriteLine("No se ha encontrado conexion con el
servidor {0}", ipep.Address);
return;
}
while (true)
{
string message = Console.ReadLine(); //Leemos el input que
queremos enviar
try
{//Enviamos el mensaje.
sent = SendData(server,
Encoding.ASCII.GetBytes(message));
}
catch (SocketException)
{//Si hay excepcion nos salimos pq no hay conexion
Console.WriteLine("No se ha encontrado conexion con el
servidor {0}", ipep.Address);
return;
}//Si se ejeucta el comando exit nos salimos
if (message == "exit" )
break;
}
//Indicamos que nos desocnectamos y cerramos el socket
Console.WriteLine("Desconectando del servidor {0}",
ipep.Address);
server.Shutdown(SocketShutdown.Both);
server.Close();
}
MESOGRAFÍA:
http://www.foromsn.com/Version_Imprimible.php?Id=139962
http://www.elsevier.com/wps/find/bookdescription.cws_home/702348/descript
ion#description
http://www.solotuweb.com/vc~t~Sockets-para-conexiones-por-TCP-con-C-en-C-
Sharp-(C)~id~7193.html c
http://dotnetero.blogspot.es/