Autor Tema: Ayuda con Sockets en C#  (Leído 2730 veces)

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

kerveros

  • Visitante
Ayuda con Sockets en C#
« : abril 02, 2008, 06:31:12 pm »
Holas bueno saben estoy haciendo un servidor en C# consockets y en TCP, primero lo realice en Consola y salio perfecto, pero ahora lo kiero pasar a modo visual y todo, bueno la cuestion es que al momento de mandar a Escuchar el socket la aplicacion se keda como colgada esperando a que un cliente se le conecte, bueno lo que kisiera saber es como hacer que este socket inicie el Escuchado pero sin que me blokee el form.

Bueno aca les coloco mi codigo pa q me hechen una mano en donde esta mi error:

// Declaramos la variable que usara para escribir los Datos
string data;
// Declaramos el puerto IP desde donde el servidor Escuchara las actividades
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);

Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

newsock.Bind(ipep);
// Ponemos al Socker en estado de escucha
newsock.Listen(10);
lbMostrar.Items.Add("Esperando a un cliente...");


Esto codigo lo estoy colocando dentro de la accion del boton "Escuchar" y el lbmostrar es un listbox en donde deberia mostrar el comentario, pero como les dije este no me muestra porke esta esperando a un cliente, esto no pasa en el modo consola.

Espero que me puedan ayudar.

Salu2 8)

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6554
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Ayuda con Sockets en C#
« Respuesta #1 : abril 02, 2008, 07:03:00 pm »
Podrías hacerlo con hilos, creas un hilo y lo mandas a ejecutar algo, aunque me parece que para este caso te saldría mejor hacer un fork y crear otro proceso. Pero proba con los hilos a ver que tal te va.

Tenes que agregar

Código: [Seleccionar]
using System.Threading;
Despues creas un objeto de este tipo algo asi como

Código: [Seleccionar]
System.Threading.Thread MiThread;
MiThread = new Thread(new ThreadStart(FUNCION_EJECUTAR));

Despues de crear la instancia le mandas que inicie
Código: [Seleccionar]
MiThread.Start();
La funcion que mandas a ejecutar debería de salirse de alguna manera y antes de salirte del form tenes uqe hacer un join con el thread algo si como

Código: [Seleccionar]
MiThread.Join();
Bueno eso esp ara darte una idea pero lo que tenes que buscar info es de hilos en c#, para tu caso que queres crear un servidorcito tal vez te saldria mejor procesos hijos en lugar de hilos, sin meterme en tantos detalles un proceso hijo tiene sus propias variables y el hilo comparte las variables.

Pero sería demasiado meterme hablar de procesos hijos y de hilos, y aparte que es un tema que domino a medias. :)