根据the documentation for the StreamSocket class:
如果套接字上没有挂起的读取或写入操作,则显式关闭StreamSocket对象(调用Close方法)将确保正常断开连接。
哪个好。但那将会表现出一个"关闭,即套接字不再能够接收或发送。
是否有相当于只执行"发送"或者"收到"关闭StreamSocket
? I.e.我希望我的代码能够继续从远程端点接收,但是想要从我的终端发出流末尾信号,以便远程端点知道我已完成发送。
我试着只关闭输出端:
streamSocket.OutputStream.Dispose();
甚至
streamSocket.OutputStream.AsStreamForWrite().Dispose();
两者都没有产生任何明显效果。
我在StackOverflow中搜索" streamsocket shutdown"但唯一与此问题略有关联的问题是Handling WinRT StreamSocket disconnects (both server and client side),而这个问题更多的是基于StreamSocket
的应用回应优雅的关闭,而不是启动一个。 :(
没有办法只做一个"发送"关机 - 相当于例如原生API中的shutdown(SD_SEND)
或.NET中的Socket.Shutdown(SocketShutdown.Send)
- 无法实现StreamSocket
端点可以在仍然存在的情况下启动连接终止的协议能够接收远程端点发送的最后一位数据。我显然希望事实上有一种方法可以通过StreamSocket
类实现这一目标。但我不能为我的生活看到任何方式去做。