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.

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
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; namespace Hola_Netcat_ { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { IPAddress direc = Dns.GetHostEntry("localhost").AddressList[0]; socket.Bind(Ep); socket.Listen(100); Socket handler = socket.Accept(); int count; String data = ""; //Declaramos data, que sera donde se guarde lo que recibamos string limp = ""; //Declaramos limp, donde se almacenara data sin salto de linea int longi ; //Declaramos longi, donde se almacenara la longitud de data do //Bucle Do/While { count = handler.Receive(bytes); //Recibimos los datos enviados y lo guardamos en cout. data = System.Text.Encoding.ASCII.GetString(bytes, 0, count); //Lo codificamos a cadena (ya que se envian como bytes) if (data != "salir\n") //Mientras lo recibido no sea exit + intro { longi = data.Length - 1; limp = data.Remove(longi, 1); llegada.Text = llegada.Text + "Informacion recibida:" + limp + " "; //Mostramos lo recibido con el textbox "llegada" } } while (data != "exit\n"); //Mientras lo recibido no sea exit + Intro se continua el bucle, si recibimos exit + intro, salimos del bucle llegada.Text = llegada.Text + "Se ha finalizado la conexión"; //Avisamos qde que se a terminado la transferencia de datos byte[] msg = System.Text.Encoding.ASCII.GetBytes("\n\nFinalizada conexion con la aplicacion"); //Codificamos de string a byte handler.Send(msg); //Enviamos el mensage al cliente handler.Shutdown(SocketShutdown.Both); //"Apagamos" los sockets handler.Close(); //Los cerramos } private void timer1_Tick(object sender, EventArgs e) { } } }
Muchas gracias al que me ayude.
