UDPClient流稍有延迟。我可以加快速度吗?

时间:2015-06-18 23:11:04

标签: c# performance udp

所以我在同一台机器上运行了2个C#应用程序。它们通过UDPClient进行通信(一个应用程序打开流并将其设置为:

udp1Server.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

另一个应用程序可以以可接受的速率连接和传递消息,唯一的问题是在另一个应用程序收到消息之前可能会有一半的延迟。

看到这些是在同一台机器上传递消息,应该几乎没有延迟吗?

有趣的是,消息实际上是从智能手机通过蓝牙发送到应用程序1,然后通过udp发送到应用程序2.而蓝牙流比同一台机器上的2个应用程序之间的通信更快?!

这是发送数据的应用程序:

static void UnityThread()
    {
        try
        {
            while (true)
            {
                if (bluetoothClients[0].Connected)
                {
                     byte[] sendBuf = Encoding.ASCII.GetBytes(latestData[0]);
                     udp1Server.Send(sendBuf, sendBuf.Length);
                }
                Thread.Sleep(1);
            }
        }

        catch (SocketException e) { }
    }

这是接收数据的应用程序:

void ConsoleThread(){
    while (!_isQuitting)
    {
        try
        {
            byte[] receiveBytes = udp1Server.Receive(ref localpt1);
            string returnData = Encoding.ASCII.GetString(receiveBytes);

            udpLastValue = returnData;
        }
        catch (Exception e)
        {
            print("errir in UDP1 " + e.ToString());
        }
        Thread.Sleep(1);
    }
}

非常感谢

1 个答案:

答案 0 :(得分:0)

修复了移除接收器睡眠的问题。