2015-06-18 46 views
2

所以我有2个C#应用程序在同一台机器上运行。他们通过UDPClient通信(一个应用程序打开的流,并将其设置是这样的:UDPClient流略有延迟。我可以加快速度吗?

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

其他应用程序可以连接并以可接受的速率进行通信的消息,唯一的问题是,有一种可能半稍有延迟它收到的其他应用程序看到,因为这些前一秒。

在同一台机器上进行通信的消息应该是几乎没有滞后吧?

有趣这是消息实际上是从智能手机通过蓝牙发送到应用程序1,然后通过udp到应用程序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); 
    } 
} 

感谢一束

+0

您的代码有一个错误,发布代码。另外,UDP没有“流”。而且,即使在本地机器上,您也可能会遇到丢包现象。 – usr

+0

@usr感谢您的期待。代码已发布 –

+0

我期望在这里延迟30毫秒。睡眠(1)通常四舍五入至15ms。你如何阅读udpLastValue并显示它?延迟可能在那里。 – usr

回答

0

固定它挂在除去睡眠接收者。