我如何知道套接字中是否有来自服务器的数据?

时间:2018-10-13 07:55:09

标签: uwp

我正在编码套接字客户端的项目。

服务器不是我们制造的,它有时会向客户端发送数据。

所以我必须使用循环任务来检查是否总是有数据。

我们知道,在没有实际接收数据的情况下,使用套接字的读取命令,套接字将停止。

在WinForm中,我使用Socket.Available检查是否确实有数据接收,然后读取数据。

但是,在UWP中,似乎没有Available属性。我使用以下代码在UWP中接收数据:

Stream streamIn = Socket.InputStream.AsStreamForRead();                        
streamIn.Flush();
StreamReader reader = new StreamReader(streamIn);
string ResponseString = reader.ReadLine();    

但是如上所述,代码运行时实际上没有数据接收,UWP的套接字将停止为Winform。

如何解决此问题,或者有一个新属性可以代替winform的Available?谢谢。

1 个答案:

答案 0 :(得分:1)

在UWP中,您可以使用StreamSocket连接并通过SocketActivityTrigger创建后台任务。收到数据包后,SocketActivityTrigger将激活后台任务。

更多信息,请参见Network communications in the background

这里是Socket activity trigger stream socket sample供您参考。