提高套接字性能

时间:2014-10-02 16:12:50

标签: c# sockets networking

我有一个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%的时间。

有什么方法可以改善这个吗?

1 个答案:

答案 0 :(得分:1)

这很可能是因为Socket.Receive()阻止数据可用。

使用Socket.BeginReceive()尝试异步编程。