我正在编码套接字客户端的项目。
服务器不是我们制造的,它有时会向客户端发送数据。
所以我必须使用循环任务来检查是否总是有数据。
我们知道,在没有实际接收数据的情况下,使用套接字的读取命令,套接字将停止。
在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
?谢谢。
答案 0 :(得分:1)
在UWP中,您可以使用StreamSocket连接并通过SocketActivityTrigger创建后台任务。收到数据包后,SocketActivityTrigger将激活后台任务。