sockets - 解复用来自不同来源的 udp 流
问题描述
我的服务器使用单个 udp 套接字来接收来自不同 IP 地址的 udp 流。(所有发件人发送到同一个端口)。当 recv 在服务器上返回一大块数据时,该块可能包含来自不同来源的字节吗?假设不是,是否有可靠的方法来确定哪个发件人发送了整个块?
解决方案
在 UDP 中,接收到的每个块都将与发送者之前传递给 'send()' 或 'sendto()' 的内容完全相同——与 TCP 不同,UDP 维护消息边界。
你可以通过调用'recvfrom()'而不是'recv()'来找出接收到的数据包的IP地址和端口。这些值将被写入您提供指向的“struct inaddr_in”中。
推荐阅读
- mysql - 已解决-为什么来自 AES_DECRYPT 的响应仅显示 ????? mysql db的字符?
- tensorflow - 内存使用,无法获得卷积算法。这可能是因为 cudnn 初始化失败,TF_FORCE_GPU_ALLOW_GROWTH' True 修复问题
- python - 如何从视图创建表格并将其显示为 HTML?
- python - 熊猫按条件为所有数据框列选择行
- c# - 从 JObject 中删除大括号
- python - 是否可以在 Folium 中绘制路径?
- javascript - 如何访问使用 ajax 和 javascript 创建的输入元素数组并获取这些单独的值
- java - 如何在非模块化应用程序中使用模块化 jar?
- node.js - 是否可以在 Firebase Cloud Functions 中的 onCall 函数结束之前返回数据
- electron - Catalina:对电子应用程序进行公证 - 我们需要一个新的应用程序 ID 并在 Apple 中注册吗?