socket.beginreceive,使用65536大小的buffer来接受
callback函数为aaa()
内容如下
aaa()
{
socket.endreceive();
socket.beginreceive(...........);
}形成一种循环无限调用的关系,24小时待机接收客户发过来的信息经过测试发现,如果客户连接好的话,没什么问题
但是一旦客户网络不好,或者断开,那就会让cpu占用达到99%并且把内存全部占用感觉应该是客户断开但是beginreceive和aaa仍然无限调用导致请问怎么解决?
callback函数为aaa()
内容如下
aaa()
{
socket.endreceive();
socket.beginreceive(...........);
}形成一种循环无限调用的关系,24小时待机接收客户发过来的信息经过测试发现,如果客户连接好的话,没什么问题
但是一旦客户网络不好,或者断开,那就会让cpu占用达到99%并且把内存全部占用感觉应该是客户断开但是beginreceive和aaa仍然无限调用导致请问怎么解决?
private TcpClient tcpClientCmd = null;
void start()
{
tcpClientCmd = new TcpClient();
tcpClientCmd.Connect(ipadress, port);
}
private object thislock = new object();
private void aaa(IAsyncResult ar)
{
Socket localClient = (Socket)ar.AsyncState;
int bytesRead = 0;
lock (thislock)
{
bytesRead = localClient.EndReceive(ar);
}
lock (thislock)
{
tcpClientCmd.Client.BeginReceive(buffer, 0, 65536, 0, new AsyncCallback(aaa), tcpClientCmd.Client);
}
}