我正在用C#将TCP Server编写为UWP应用程序,并希望轮询客户端列表以检查消息。客户端列表是StreamSockets的列表。
在常规C#中,我可以仅检查NetworkStream以查看数据是否可用。 UWP中有什么方法可以解决此问题吗?我目前正在使用:
mClient.InputStream.ReadAsync(streamBuffer, MessageHeader.HEADER_LENGTH, InputStreamOptions.None).AsTask().Wait(//Some amount of ms);
这很糟糕,因为对于许多客户而言,延迟将变得太大。似乎还有一种竞争条件,除非满足读取总数,否则任务仍无法完成。
我正在寻找与此在语义上相同的东西:
if (mNetworkStream.DataAvailable)
{
mClient.Client.Receive(mBuffer, 1, SocketFlags.Peek);
这可能吗?
答案 0 :(得分:0)
好吧,所以对此有更多的了解。我正在使用Unity,但自从引入IL2CPP脚本后端以来,我还没有意识到System.Net.Sockets可以在UWP中使用。这意味着我不必使用任何限制性的UWP套接字包装器。
感谢@jdweng,我开始实现多侦听器变体,直到发现可以使用现有的.Net实现!