代码如下,发生了丢包。 是否需要做一个暂停监听?该怎么做呢?急等~
private void TcpServerHandler()
{ //tcpserver, receive msg from sztc, update status to 2 or delete msg
try
{
listener = new TcpListener(IPAddress.Parse(strLocalIP), iLocalPort);
listener.Start();
Log("tcplistener start listening");
while (bRun1)
{
Thread.Sleep(1);
client = listener.AcceptTcpClient();
Log("client "+client.Client.LocalEndPoint + "connected");
netStream = client.GetStream();
while (true)
{
Thread.Sleep(1);
byte[] buffer = new byte[BufferSize];
int byteRead = 0;
int i=0;
try
{
lock (netStream)
{
byteRead = netStream.Read(buffer, 0, buffer.Length);
}
string recMsg = "";
if (byteRead > 0)
{
recMsg = Encoding.GetEncoding("GBK").GetString(buffer, 0, byteRead);
//recMsg = Encoding.UTF8.GetString(buffer, 0, byteRead);
//压入队列
myQueue.Enqueue(recMsg);
Log("TcpServerHandler : receive data : " + recMsg);
}
else
{
Log("TcpServerHandler : client disconnect ");
break;
}
}
catch (Exception ex)
{
string s = ex.Message;
Log(ex.Message);
MessageBox.Show(ex.Message);
break;
}
} netStream.Dispose();
client.Close(); }
}
catch (Exception ex)
{
//MessageBox.Show(ex.Message, "tcpserver listen process exception");
Log(ex.Message);
}
}
private void TcpServerHandler()
{ //tcpserver, receive msg from sztc, update status to 2 or delete msg
try
{
listener = new TcpListener(IPAddress.Parse(strLocalIP), iLocalPort);
listener.Start();
Log("tcplistener start listening");
while (bRun1)
{
Thread.Sleep(1);
client = listener.AcceptTcpClient();
Log("client "+client.Client.LocalEndPoint + "connected");
netStream = client.GetStream();
while (true)
{
Thread.Sleep(1);
byte[] buffer = new byte[BufferSize];
int byteRead = 0;
int i=0;
try
{
lock (netStream)
{
byteRead = netStream.Read(buffer, 0, buffer.Length);
}
string recMsg = "";
if (byteRead > 0)
{
recMsg = Encoding.GetEncoding("GBK").GetString(buffer, 0, byteRead);
//recMsg = Encoding.UTF8.GetString(buffer, 0, byteRead);
//压入队列
myQueue.Enqueue(recMsg);
Log("TcpServerHandler : receive data : " + recMsg);
}
else
{
Log("TcpServerHandler : client disconnect ");
break;
}
}
catch (Exception ex)
{
string s = ex.Message;
Log(ex.Message);
MessageBox.Show(ex.Message);
break;
}
} netStream.Dispose();
client.Close(); }
}
catch (Exception ex)
{
//MessageBox.Show(ex.Message, "tcpserver listen process exception");
Log(ex.Message);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货