所以我在同一台机器上运行了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);
}
}
非常感谢
答案 0 :(得分:0)
修复了移除接收器睡眠的问题。