Implementacion de Socket

Iniciado por rigorvzla, 7 Febrero 2019, 15:27 PM

0 Miembros y 1 Visitante están viendo este tema.

rigorvzla

hola amigos como estan, eh incursionado en esta parte que es el intercanbio de datos de 2 pc, resulta que eh leido sobre sockets y signalR inclinandome a socket que me parecio mas simple de usar aparte de conseguir muchos ejemplos faciles de entender, en este ejemplo que els dejare explica como enviar y recibir datos , mas no dice como puedo hacer que quede abierto y no se cierre luego de recibir el primer dato, alguien me puede ayudar a como mantener la conexion abierta para poder enviar datos  seguidamente ?
teniendo en cuenta que esto no funciona de manera asincronico , probe con esa forma y no pude hacerlo correr por no saber el problema.
aqui funciona de manera no sincronica lo que implica que si lo corro en wpf se frizara la interfaz

Investigando consegui un codigo que me permite enviar string desde el android al pc y es el siguiente codigo

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;

class TcpDemo
{
 static void Main(  )
 {
   new Thread (Server).Start(  );      
   Thread.Sleep (500);              
   Client(  );
 }

 static void Client(  )
 {
   using (TcpClient client = new TcpClient ("localhost", 51111))
   using (NetworkStream n = client.GetStream(  ))
   {
     BinaryWriter w = new BinaryWriter (n);
     w.Write ("Hello");
     w.Flush(  );
     Console.WriteLine (new BinaryReader (n).ReadString(  ));
   }
 }

 static void Server(  )     //
 {
   TcpListener listener = new TcpListener (IPAddress.Any, 51111);
   listener.Start(  );
   using (TcpClient c = listener.AcceptTcpClient(  ))
   using (NetworkStream n = c.GetStream(  ))
   {
     string msg = new BinaryReader (n).ReadString(  );
     BinaryWriter w = new BinaryWriter (n);
     w.Write (msg + " right back!");
     w.Flush(  );                    
   }                                
   listener.Stop(  );
 }
}


muy practico, el problema esta que en wpf puede freezar la pantalla y se cierra al recibir solo un dato hay que volver a ejecutarlo para que vuelva a recibir, esto ultimo quisiera mantenerlo espero puedan ayudarme gracias de antemano