Funciona correctamente, pero el único "problema" si es que puede llamarse así es que en el servidor se muestra lo enviado desde el cliente pero con un salto de línea. Creo que el problema es que al pulsar la tecla intro para enviar, dicha tecla también se envía.
Llevo bastante tiempo intentando averiguar como solucionarlo pero ya tengo la mente quemada, ojalá algunos tenga la mente más fresca.
Servidor
Código
using System.IO; using System.Diagnostics; using System.Text; using System.Threading; using System.Runtime.InteropServices; using Microsoft.Win32; using System; using System.Net.Sockets; using System.Net; namespace socket_servidor{ class Program{ public static void Main(string[] args){ try { s.Bind (ep); s.Listen (25); Socket accepted = s.Accept(); Console.WriteLine("Conexion recibida\n"); while(true){ int rec = accepted.Receive(buffer,0,buffer.Length,0); string strData = Encoding.ASCII.GetString(buffer); Console.Write(">>> "+strData+"\n"); } }catch { Console.WriteLine ("Error iniciando conexion"); Console.ReadKey(); } } } }
Cliente
Código
using System.IO; using System.Diagnostics; using System.Text; using System.Threading; using System.Runtime.InteropServices; using Microsoft.Win32; using System; using System.Net.Sockets; using System.Net; namespace sockets{ class Program{ public static void Main(string[] args){ Console.WriteLine ("Conectandose al servidor..."); Socket _S = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Socket de tipo TCP. try { _S.Connect (ep); Console.WriteLine ("Conectado correctamente.\n"); while(true){ Console.Write(">>> "); string text = Console.ReadLine(); byte[] data = Encoding.ASCII.GetBytes(text); _S.Send(data); } }catch(Exception ex) { Console.WriteLine (ex.Message); Console.ReadKey(); } } } }
Vamos, solucionar el salto de línea que produce la lectura de la tecla intro.