- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我打算通过套接字接收数据包,但由于它们是从发送方以高频率发送的,所以它们中的许多被打包到一个 byte
数组中。 SocketAsyncEventArgs.Buffer
然后保存多个数据包,即使它们是单独发送的(使用 wireshark
验证)。
我已经尝试对传入的数据包进行排队并异步处理它们,但我仍然得到相同的结果。
这种行为的原因可能是什么?
最佳答案
这就是 TCP 的工作原理。 TCP 连接是一个双向字节流,您必须这样对待它。来自一端的单次发送可能会导致接收方的多次读取,反之亦然,多次发送可能会以单次读取结束,并且传输不会保留应用程序消息边界。
你必须缓冲输入,直到你知道你有一个完整的应用程序消息。常见的方法是:
关于c# - Socket ReceiveAsync 合并数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6791022/
有没有办法使用 Microsoft.Azure.ServiceBus 包来等待当前线程从队列接收消息? 这可能更多是我的理解和以不打算使用的方式使用该技术的愿望的问题,但我想做的是结合 the fol
我已经习惯了同步套接字,但为了达到现在的状态,我有些头疼,尤其是在 Socket.Receive(..) 并不总是接收到所有字节的情况下 这是我以前使用的代码 public byte[] Re
我目前正在开发一个应用程序服务器。我想使用 AcceptAsync 方法。我收到错误消息“对象引用未设置为对象的实例。”调用 ReceiveAsync 方法时。如果有人提出这个问题并得到解决方案? p
我需要为一些旧的 cobol 重新实现数据库连接驱动程序我的一位客户的数据库。应用程序的构建方式,我无法使用async/await (就这样吧,我知道这很愚蠢)。 整个应用程序是一个 ASP.NET
我有一个基于异步Socket的长时间运行的服务程序。当其他设备检测到它的运行状况(短时间 TCP 端口连接和断开连接)时,它的内存使用量会随着时间的推移而不断增加。我怀疑这种类型的 TCP 连接的一些
美好的一天。我使用 UdpClient 并对其进行包装。 为了阅读我有异步方法: private async Task Receive(UdpClient client, CancellationTo
当使用异步套接字时,特别是 Socket.ReceiveAsync,是否可以进行“部分”接收?例如,我想指定我希望 SocketAsyncEventArgs 对象有 1024 个字节,但我只想允许接收
在读取已接收到的少量数据时,我尝试比较同步方法和异步方法的性能。所以我发送数据并确保它正在等待接收套接字(相同的程序)。 source.Send(sendBuffer); while (target.
我打算通过套接字接收数据包,但由于它们是从发送方以高频率发送的,所以它们中的许多被打包到一个 byte 数组中。 SocketAsyncEventArgs.Buffer 然后保存多个数据包,即使它们是
似乎在使用 SslStream 时我无法获得 ReceiveAsync 的好处,因为我必须通过仅支持 Begin* End* 异步模型的 SslStream 进行读取。 是否可以在完成身份验证之前只使
我看过 TCP 的 ReceiveAsync 示例,但没有看过 UDP。 ReceiveAsync 是否与 UDP 兼容?如果是这样,您看到过任何示例吗? 谢谢。 最佳答案 UDP 是面向数据报的协议
我正在使用如下所示的 UDPClient dim c = New UDPClient(port) client.CLient.ReceiveTimeout = 1 await client.Recei
我正在测试以下两种情况,一种有效,但另一种无效。我有套接字服务器和套接字客户端应用程序在两台不同的机器上运行 这两个场景都使用了 socketasynceventargs 场景 1(有效)循环创建 4
服务工作线程有两种方法处理来自 Azure 服务总线队列的消息: while (!ExitRequested) { try { var message = await
我有这段代码通过 UdpClient 发送命令,然后等待响应: cameraListener = new UdpClient(52381); cameraSender = new UdpCl
我正在使用 .NET 4.5.1 运行 C# 控制台应用程序。当我运行以下函数时,下面的 udpClient.ReceiveAsync() 调用会无一异常(exception)地静默终止程序。我该如何
我正在通过 websocket 接收 JSON。至少:我是部分的。使用在线 websocket 服务,我收到完整的 JSON 响应(所有 HTML 标记都被忽略)。当我查看在控制台中收到的 JSON
我目前正在编写一个客户端应用程序,我想知道我是否应该使用 Socket 类的 ReceiveAsync 或 BeginReceive 方法。到目前为止,我一直在使用后者,但是,我发现它似乎对 CPU
我有一个接口(interface) INetwork用一个方法: Task SendAsync(string messageToSend, CancellationToken ct) 接口(inter
我正在编写一个只使用一个套接字的简单套接字客户端。所以我想我可以为所有接收操作重用一个 SocketAsyncEventArgs。只要连接了 socket ,它就可以正常工作。当服务器断开连接时,客户
我是一名优秀的程序员,十分优秀!