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);
}
}
感谢一束
您的代码有一个错误,发布代码。另外,UDP没有“流”。而且,即使在本地机器上,您也可能会遇到丢包现象。 – usr
@usr感谢您的期待。代码已发布 –
我期望在这里延迟30毫秒。睡眠(1)通常四舍五入至15ms。你如何阅读udpLastValue并显示它?延迟可能在那里。 – usr