c# socket 通常使用半天 程序会自动关闭
c# socket 正常使用半天 程序会自动关闭
放在windows 2008server 上的,16G内存 半天就自动挂掉了,报错CLR20r3 和System.OutOfMemoryException
放在windows 2008server 上的,16G内存 半天就自动挂掉了,报错CLR20r3 和System.OutOfMemoryException
IPAddress ip1;
private bool isExit = false;
TcpListener listener;
private ManualResetEvent allDone = new ManualResetEvent(false);
myThread = new Thread(new ThreadStart(AcceptConnection));
myThread.Start();
private void AcceptConnection()
{
IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
ipHost.AddressList[0];
ip1 = IPAddress.Parse("172.19.58.164");
listener = new TcpListener(ip1, 3001);
listener.Start();
while (isExit == false)
{
try
{
allDone.Reset();
Application.DoEvents();
AsyncCallback callback = new AsyncCallback(AcceptTcpClientCallBack);
listener.BeginAcceptTcpClient(callback, listener);
allDone.WaitOne();
}
catch (Exception e)
{
break;
}
}
}
private void AcceptTcpClientCallBack(IAsyncResult iar)
{
try
{
allDone.Set();
TcpListener mylistener = (TcpListener)iar.AsyncState;
TcpClient client = mylistener.EndAcceptTcpClient(iar);
DataReadWrite datareadwrite = new DataReadWrite(client);
datareadwrite.ns.BeginRead(datareadwrite.read, 0, datareadwrite.read.Length, ReadCallBack, datareadwrite);
}
catch (Exception e)
{
return;
}
}
private void ReadCallBack(IAsyncResult iar)
{
string revstring = string.Empty;
string msg = string.Empty;
try
{
DataReadWrite datareadwrite = (DataReadWrite)iar.AsyncState;
int recv = datareadwrite.ns.EndRead(iar);
revstring.Remove(0, revstring.Length);