Título: [C#]Problema con Sockets + Formularios Publicado por: Jubjub en 3 Enero 2008, 22:57 pm Estoy haciendo una aplicacion con Sockets (basada en el Tutorial de Sockets (http://foro.elhacker.net/index.php/topic,165986.0.html) de Hendriҳ), pero con la diferencia de que yo lo he intentado hacer con formularios, y he tenido dos problemas.
1.-Al darle al boton de escuchar, el programa se cuelga. Le envio mensajes por el Netcat y no responde, pero al enviarle el comando EXIT, que cierra la conexion interrumpiendo el bucle do, el programa se "descuelga" y puedo ver todo lo que le he enviado, la pregunta es si se puede conseguir hacerlo de otra forma para que no se cuelgue. :( (Con consola va perfeco) 2.-El texto que aparece en el textbox "llegada" aparece demasiado seguido, le he añadido un TAB porque no se cual es la forma de indicar un salto de linea. :-( Aquí esta el código: Código
Muchas gracias al que me ayude. ;) Título: Re: [C#]Problema con Sockets + Formularios Publicado por: MANULOMM en 4 Enero 2008, 14:30 pm hola, antes de todo, quiero aclarar que no he visto todo el code y poco he trabajado con sockets en .net pero creo que deberias de programarte un delegado para cuando el socket reciva los datos algo asi como recive o algo fijate en la documentacion o en las propiedades del socket a ver que eventos te encuentras.... en todo caso intenta reemplazar el do while por otra cosa, muy aconsejable un evento...
Atentamente, Juan Manuel Lombana Medellìn - Colombia Título: Re: [C#]Problema con Sockets + Formularios Publicado por: angelveredis en 8 Noviembre 2009, 00:33 am Tal vez ya sea un poco tarde pero este problema le puede surgir a mas de una persona.
Bueno lo que tendrias que usar aqui seria un hilo y para esto debes usar el espacio de nombres System.Threading los hilos permiten ejecutar tareas paralelas para seguir normalmente el funcionamiento del programa sin esperar la terminacion de otra bueno estos son los pasas para hacerlo. 1.-Agregar el espacio de nombres asi Using System.Threading. 2.-Crear un metodo void donde se hace la conexion y donde se pretende escuchar al cliente. Private void conexionconhilo() { IPAddress direc = Dns.GetHostEntry("localhost").AddressList[0]; IPEndPoint Ep = new IPEndPoint(direc, 1235); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Bind(Ep); socket.Listen(100); Socket handler = socket.Accept(); //abajo siguen las demas lineas... } 3.-Ahora declaramos un artibuto de la clase Threading. Private Threading hiloaux; 4.-Por ultimo en el boton donde quieran hacer la conexion on el load del programa procederemos a utilzar el hilo hilo axiliar. ThreadStart hiloxd = new ThreadStart(conexionconhilo); hiloaux = new Thread(hiloxd); hiloaux.Start(); Bueno creo que eso es todo si desearan obtener el nombre del servidor de forma que no sepan cual es el nombre cree este metodo espero y les sirva en algo. 1.-Agregamos el espacio de nombres using Microsoft.Win32. 2.-Creamos un metodo el cual nos devolvera el nombre del servidor o del equipo. Private string nombredelequipo() { string x ="" RegistryKey reg = Registry.LocalMachine.OpenSubKey (@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", true); reg1.OpenSubKey("RegisteredOwner",true); x= reg.GetValue("RegisteredOwner").ToString();//Obtenemos el nombre del equpo y se lo asignamos a x. return x; } 3.- Ahora agregamos el metodo: IPAddress direc = Dns.GetHostEntry(nombredelequipo()).AddressList[0]; Bueno eso fue mi pequeño aporte espero que a alguin le sea util. :D Título: Re: [C#]Problema con Sockets + Formularios Publicado por: Jubjub en 8 Noviembre 2009, 04:38 am Cuantisimo tiempo hace de aquello! :D
No sabia ni que era el \n :P Si lo hubiera tenido que hacer hoy en dia, probaria primero con un DoEvents por ahi, aunque thread seria bastante mas adecuado :P Título: Re: [C#]Problema con Sockets + Formularios Publicado por: vanad en 21 Febrero 2010, 02:08 am Hola, yo tengo un problema similar.
En lugar de ejecutar el thread desde un boton lo hago en la funcion form_load ya que necesito que este activo desde el principio, el problema es que mientras el hilo esta en ejecución la función que lo ha lanzado no finaliza y mientras no finaliza el form_load no se puede usar el formulario. Agradeceria mucho si alguien supiera como solucionar este problemilla. Título: Re: [C#]Problema con Sockets + Formularios Publicado por: elmaro en 22 Febrero 2010, 03:26 am http://www.elguille.info/colabora/puntoNET/PabloTilli_SocketsVBNET.htm
Título: Re: [C#]Problema con Sockets + Formularios Publicado por: [D4N93R] en 26 Febrero 2010, 20:04 pm Te dejo este enlace con un tuto de Threading para que se los apliques a los sockets.
http://foro.elhacker.net/net/tutorial_iquestsystemthreading_iexclcomo_y_cuando_c-t277825.0.html;msg1367009#msg1367009 (http://foro.elhacker.net/net/tutorial_iquestsystemthreading_iexclcomo_y_cuando_c-t277825.0.html;msg1367009#msg1367009) Saludos |