Guillermo Javier Salazar STAFF TEAM
Mensajes : 181 Puntos : 349 Localización : México Comentarios : El azar favorece a una mente preparada.
| Tema: TCP/IP Cliente y Servidor Vie Mar 11, 2011 7:18 pm | |
| TCP/IP Cliente y Servidorhola amigos aqui va un pequeño tutorial de como hacer un par de programas que se comuniquen entre si en dos maquinas remotas o dentro de la misma maquina utilizando el protocolo TCP/IP aqui va el codigo del cliente: _____________________________________________________________________ - Código:
-
/* * Creado por SharpDevelop. * Usuario: HERNAN */ using System; using System.IO; using System.Text; using System.Net.Sockets;
public class cliente {
public static void Main() {
try { TcpClient Micliente = new TcpClient();//creamos una instancia de la clase TcpClien Console.WriteLine("Conectandose con el servidor..."); Micliente.Connect("192.168.0.2", 1000);/*con la instancia creada nos conectamos al servidor colocando la ip de la maquina en la que esta alojado y el puerto de comunicacion */ Console.WriteLine("Conecxion exitosa \n"); Console.Write("Ingrese Elmensaje a transmitir: "); String str = Console.ReadLine();//guardamos en la variable str el mensaje a transmitir Stream stm = Micliente.GetStream();//creamos el stream que se comunicara con el servidor ASCIIEncoding codificador = new ASCIIEncoding();//creamos una instancia de codificacion ascii byte[] mensaje = codificador.GetBytes(str);//codificamos y convertimos el mensaje a un byte array Console.WriteLine("Transmitiendo mensaje..."); stm.Write(mensaje, 0, mensaje.Length);//enviamos el mensaje Console.WriteLine("Esperando Respuesta del servidor..."); byte[] respuesta = new byte[100];//creamos un byte en el que almacenaremos las respuesta del servidor int k = stm.Read(respuesta, 0, 100);//se asigna a k la cantidad de bytes recibidos //ademas se guardan en respuesta los bytes recibidos y se pone como limite un maximo de 100 bytes for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(respuesta[i]));//se escrioben uno a uno los bytes recibidos } Console.ReadLine(); Micliente.Close();//cerramos la conexion }
catch { Console.WriteLine("No se pudo establecer conexion con el servidor"); Console.WriteLine("presione una tecla para salir...."); Console.ReadKey(); } }
} ahora el codigo del servidor: _____________________________________________________________________ - Código:
-
/* * Creado por SharpDevelop. * Usuario: HERNAN */ using System; using System.Text; using System.Net; using System.Net.Sockets; using System.Windows.Forms; public class serv { public static void Main() { try { String nombrehost = Dns.GetHostName(); IPAddress ipAd = (Dns.GetHostEntry(nombrehost)).AddressList[2];//obtenemos la ip del equipo en el que esta el servidor TcpListener miescucha = new TcpListener(ipAd, 1000); //ip local y puerto por el que se comunica el servidopr miescucha.Start();//empezamos a escuchar el puerto especifico Console.WriteLine("Esperando conexion del cliente..."); Socket s = miescucha.AcceptSocket(); //el servidor queda a la espera de una solicitud y la acepta Console.WriteLine("cliente conectado"); byte[] b = new byte[200];//byte en el que guardamos los bytes recibidos int k = s.Receive(b);//le asignamos a b los bites recibidos y asignamos a k el valor de la cantidad de bytes recibidos Console.WriteLine("Recibido..."); for (int i = 0; i < k; i++) { Console.Write(Convert.ToChar(b[i]));//escribimos los bytes recibidos en la consola } ASCIIEncoding codificador = new ASCIIEncoding();//creamos una instancia del codificacion ascii s.Send(codificador.GetBytes("Su mensaje fue recibido por el servidor\nPresione ua tecla para salir...")); //la anterior conviete una cadena en bytes, la codifica y luego se la envia al cliente Console.WriteLine("\n\nintercambio exitoso\nPresione ua tecla para salir..."); s.Close(); miescucha.Stop();//dejamos de escuchar el puerto Console.ReadKey(); } catch (Exception e) { MessageBox.Show("El cliente se ha desconectado abruptamente!!!"); Console.Write("Error producido" + e.StackTrace + "\n\nPresione ua tecla para salir..."); Console.ReadKey(); } } } descarga el codigo fuente en: [Tienes que estar registrado y conectado para ver este vínculo]Creado por: Hernan Sanabria en el grupo de facebook, gracias por tu colaboración. | |
|