轮询StreamSocket连接UWP服务器

时间:2020-04-20 16:27:31

标签: c# networking uwp

我正在用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);

这可能吗?

1 个答案:

答案 0 :(得分:0)

好吧,所以对此有更多的了解。我正在使用Unity,但自从引入IL2CPP脚本后端以来,我还没有意识到System.Net.Sockets可以在UWP中使用。这意味着我不必使用任何限制性的UWP套接字包装器。

感谢@jdweng,我开始实现多侦听器变体,直到发现可以使用现有的.Net实现!