Socket编程问题,为什么TcpListener一不小心就把程序死掉了?
我做服务时,一不小心就死掉了,还不知道怎么回事!Test()后就死掉了……
private void Test()
{
listener=new TcpListener(2003);
listener.Start();
while(true)
{
mysock=listener.AcceptSocket();
Thread thread=new Thread(new ThreadStart(receive));
thread.Start();
}
}
private void receive()
{
if(mysock.Connected)
{
NetworkStream netStream=new NetworkStream(mysock);
Byte[] messageByte=new Byte[64];
netStream.Read(messageByte,0,messageByte.Length);
string readMessage=System.Text.Encoding.BigEndianUnicode.GetString(messageByte);
MessageBox.Show(readMessage);
}
else
{
MessageBox.Show("尚未连接!");
}
}
成功示例当然有,晕,而且刚开始时也碰到和你一样的问题,在侦听循环里cpu 跑满了,还好我事先在任务管理里将它设置为低优先,出错也好结束它。
如果你不想做异步+回调,用同步则必须使用多线程,另外
在你的 while(true) {} 循环里加个
Application.DoEvents();
Thread.Sleep(10);
试试