我有一个TCP / IP套接字,并通过它与外部传感器设备进行通信。我们使用的专有协议具有以下功能:设备可以随时向客户端发送数据包。这被称为“事件”,非常类似于C#事件。
我基本上是这样实现的:
...
socket.ReceiveTimeout = ResolveTimeout(timeout);
while (...)
{
var buffer = new byte[count];
int readBytes = socket.Receive(buffer, 0, count, SocketFlags.None);
...
}
使用此代码,应用程序的性能会受到影响。我在一个分析器中测量它,它告诉我Socket.Receive需要45%的时间。
有什么方法可以改善这个吗?