gpt4 book ai didi

c# - Windows Phone 8 - 保持套接字打开并接收未知长度的数据

转载 作者:行者123 更新时间:2023-11-30 16:14:24 26 4
gpt4 key购买 nike

我有套接字,我想在其中接收多条长度未知的消息:文本、媒体、..

我看到它是如何与 Windows.Networking.Sockets 一起工作的,似乎发送方应该先发送长度,但我不是这样

我在 System.Net.Sockets 中看到了一些改进,但没有发现任何监听数据包接收的事件。

我的问题是:我是否必须不时检查套接字以获取数据?有没有更好的实现方式?

最佳答案

Windows Phone 8 方法

使用 System.Net.Sockets.Socket 类支持异步网络操作 ReceiveAsync方法。您需要做的就是在进行此调用之前正确配置 SocketAsyncEventArgs,并且只有在收到数据时您才能引发处理程序。

例子来自 this MSDN article展示了如何同步执行读取操作,但它在内部使用的是异步模式。如果您从代码中删除 ManualResetEvent 部分,则调用将失败,并且只有在数据准备好处理时才会触发该事件。

桌面/完整 .NET 方法

使用 TcpClient类而不是 Socket,您将能够获得一个实现了 BeginReadNetworkStream 对象- 异步方法,只有在有新数据要读取时(或远程端已关闭)才会调用回调函数。

  • 注意:BeginRead 的 MSDN 示例已在 EndRead 的页面上完成。将这两个代码片段一起用于工作代码。

关于c# - Windows Phone 8 - 保持套接字打开并接收未知长度的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20739760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com