我正在用 C# 编写解析器。它接收并发送一个带有 的数据包max length = 100
。但是,每个数据包之后(接收和发送)之间的时间超过 2 秒。我不知道这是我的实现问题还是 gprs 方面的问题。
服务器监听:
tcpListener = new TcpListener(IPAddress.Any, Names.comPort);
tcpListener.Server.NoDelay = true;
while (true)
{
TcpClient client = tcpListener.AcceptTcpClient();
Thread th = new Thread(new ParameterizedThreadStart(HandleComm));
th.IsBackground = true;
th.start(client);
}
开始接收数据:
HandleComm(object client)
{
NetworkStream clientStream = ((TcpClient)client).GetStream();
while (true)
{
try { bytesRead = clientStream.Read(buffer, 0, 200);}
catch(Exception ex) {break;}
}
}
这是一个简单的实现,我收到第一个数据包的 bytesRead 与第二个相比大约是 2s。我觉得太慢了。我怎样才能增加接收时间?我在收到数据和回复后已经检查过了,只用了 1 毫秒。
添加发送部分:
socket.NoDelay = true;
socket.SendTimeout = 200; // minimum time out
socket.SendBufferSize = bytes.Length;
socket.Send(bytes, SocketFlags.DontRoute);