sockets相关内容

UDP丢包模拟&可能性

我目前正在创建一个与多个 arduino 板通信的服务器软件.由于硬件原因,我使用的是 UDP 协议.我有一个非常简单的机制,可以在大多数情况下在包裹丢失时重新发送包裹.我现在有两个问题: UDP 数据包在没有 Internet 访问、大约 20 个 arduino 和一台计算机的网络中丢失的可能性有多大?是否还需要重新发送方法? 有没有一种方法可以模拟此网络中的 UDP 数据包丢失, ..
发布时间:2022-01-22 16:59:53 其他开发

查找 UDP 数据包的源 IP/进程

我在我的 C 程序中使用 recvfrom() 来接收来自多个客户端的 UDP 数据包,这些客户端可以使用自定义用户名登录.一旦他们登录,我希望他们的用户名与唯一的客户端进程配对,以便服务器通过数据包的来源自动知道用户是谁.如何从使用 recvfrom() 收到的数据包中获取此信息? 解决方案 #include #include #inclu ..
发布时间:2022-01-22 16:58:35 其他开发

将小型 UDP 数据包从 Linux 内核发送到 LOOPBACK

情况:我的代码基本上被入侵到 Linux 内核的驱动程序中.我想在用户空间中的应用程序被触发到主系统之前通知它们值得注意的原始事件. 解决方案的步骤:我在这里找到了一个从内核空间发送 UDP 数据包的好例子:http://kernelnewbies.org/Simple_UDP_Server.他们使用 INADDR_LOOPBACK 作为目标地址,这正是我想要的. 由于这是中断上下文, ..
发布时间:2022-01-22 16:58:29 其他开发

UDP 是 IPC 的可靠协议吗?

如果我纯粹将 UDP 用于进程间通信(即在 1 个系统中,不涉及网络),我可以认为它是可靠的吗?还是我还需要担心丢包等问题? 注意这是一个实践问题,而不是理论问题.如果答案因操作系统而异,请说明具体情况,尤其包括 Windows、Linux 和 Mac. 编辑:不,它不可靠——下面的例子. 感谢当前答案为我指明了正确的方向. 此代码在 Windows 8.1 上丢弃了一个数据包 ..
发布时间:2022-01-22 16:58:01 其他开发

UDP 数据接收上的 Python 套接字错误.(10054)

我目前在使用 UDP 和 Python 套接字模块时遇到问题.我们有服务器和客户端.当我们向用户发送数据时,就会出现问题.用户可能通过客户端崩溃、ISP 断开连接或其他一些不正确的方法关闭了与服务器的连接.因此,可以将数据发送到关闭的套接字. 当然,对于 UDP,您无法判断数据是否真的到达或是否已关闭,因为它不在乎(至少,它不会引发异常).但是,如果您发送数据并且它被关闭,您会以某种方式获取 ..
发布时间:2022-01-22 16:55:57 Python

套接字,Unix 域 UDP C++ recvfrom 无法填充源地址

我正在尝试使用 UDP 在 C++ 中的 Android 上创建一个 unix 域套接字服务器和客户端.我需要客户端向服务器发送一条消息(“hi"),然后服务器需要从那里向客户端发送数据.我已经成功创建了双方的套接字,并且我能够在服务器上从客户端接收到一条短消息.但是服务器上的 recvfrom(..) 不会填充 struct sockaddr *src_addr, socklen_t *addr ..
发布时间:2022-01-22 16:55:43 服务器开发

UWP 应用未从本地主机上的 .NET 桌面应用接收 UDP 数据报

我一直在尝试在作为客户端的 UWP 应用和作为服务器的 .NET 桌面应用之间设置客户端服务器.我使用 UDP 数据报作为两者之间的消息传递系统. 这是我的 UWP 代码,用于在端口 22222 的 localhost IP 上侦听数据报: 私有异步 void listenToServer(){//设置 UDP 监听器socketListener = new DatagramSocket( ..
发布时间:2022-01-22 16:54:53 C#/.NET

使用 select() 监听 tcp 和 udp 消息

当我尝试此代码时,我只收到 TCP 消息: 从套接字导入 *从选择导入选择def read_tcp(s):而真:客户,地址 = s.accept()数据 = client.recv(8000)客户端.close()打印 "Recv TCP:'%s'" % 数据def read_udp(s):而真:数据,地址 = s.recvfrom(8000)打印 "Recv UDP:'%s'" % 数据定义运 ..
发布时间:2022-01-22 16:54:38 Python

UDP 和套接字,recvfrom() 返回 -1 和资源暂时不可用

我有一个客户端和一个服务器与 C 中的数据报 (UDP) 通信.客户端发送 5 个消息,并在接收到消息后,服务器将消息发回.在客户端完成接收消息之前,接收和发送消息都很棒.在服务器发回所有 msgs 后,它使用 close() 终止.所以来自客户端的 recvfrom() 应该返回 0,对吧? 假设 recvfrom() 应该在服务器端 close() 时返回 0,它会返回 -1,错误资源暂 ..
发布时间:2022-01-22 16:53:42 其他开发

为 UDP 套接字的 recv fcn 设置超时

我通过sendto发送一个UDP数据包,然后通过recv收到应答.如果recv没有收到回复,程序收到不进行.但是,udp 数据包可能会丢失,或者由于某种原因,数据包可能无法传递,从而导致程序卡在 recv 行.我想知道如果没有数据包到达,例如一分钟,如何为 recv 设置超时,然后跳过该行并继续执行代码? 我没有粘贴完整的代码,因为它是一个通用的 udp 代码,我的问题与唯一的 recv 有 ..
发布时间:2022-01-22 16:51:33 服务器开发

C中的UDP套接字

我正在处理课堂作业问题.我想启动一个侦听文件请求的 UDP 服务器.它打开文件并使用 UDP 将其发送回请求客户端. 这是服务器代码. //创建 UDP 套接字if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {perror("无法创建套接字");退出(-1);}//配置套接字memset(&ser​​ver, 0, sizeof s ..
发布时间:2022-01-22 16:51:27 其他开发

如何摆脱缓冲区的剩余空间?

我有一个使用数据报套接字交换消息的服务器-客户端应用程序.我最初将缓冲区大小设置为 1024 字节,因为我不知道消息的长度.当我发送小于 1024 字节的内容时,我的字符串的其余部分显示为一些奇怪的字符(空字符或者我不确定它们是如何被调用的).这是一个屏幕: 客户端代码:byte[] buf = ("这是另一个数据包.\n").getBytes();DatagramPacket packet ..
发布时间:2022-01-22 16:49:36 Java开发

c udp 非阻塞套接字,带有 recvfrom 和 select

我想在客户端实现带有选择功能的非阻塞套接字.但它没有按预期工作.在下面的代码中,它永远不会遇到 else , rv 始终为 1 并且当套接字上没有任何内容时,应用程序会停止一段时间,并在套接字上有其他消息时继续.我不希望这种行为,我希望客户端在套接字上没有任何内容可接收时将消息发送回服务器. fd_set readfds;fcntl(sd, F_SETFL, O_NONBLOCK);而(1){F ..
发布时间:2022-01-22 16:49:08 其他开发

套接字接收队列中有多少数据包或字节?

使用 SO_RCVBUF 调用 getsockopt 将返回套接字接收缓冲区的分配大小. 我很想知道在调用 recv 或 recvfrom 之前是否可以查询缓冲区中实际有多少数据报包(或字节)?如果有帮助,我可以接受 Linux 特定的答案.有问题的套接字是 UDP,但我怀疑它对 TCP 无关紧要. 我问的原因只是为了测试和调试目的.我正在尝试验证我对 setsocktop(SO_RC ..
发布时间:2022-01-22 16:48:57 服务器开发

如何通过 UDP CFSocket 发送数据包?

我完全是网络新手,但是我是一名 c/c++ 程序员,并且正在使用 Objective-c(这是针对 OSX/iPhone). 我正在尝试学习如何使用 cfsocket 发送带有 UDP 套接字的魔术包.我已经看到有 AsyncUDPSocket 库之类的库,但是我不想使用这些库. 我试图查看苹果的 UDPecho 文件,但作为初学者,它确实让我感到困惑.我用谷歌搜索了很多,我把下面的代 ..
发布时间:2022-01-22 16:48:38 其他开发

如何从 udp-socket (C/C++) 获取您自己的(本地)IP 地址

您有多个网络适配器. 将 UDP 套接字绑定到本地端口,无需指定地址. 在其中一个适配器上接收数据包. 如何获取收到数据包的适配器的本地IP地址? 问题是,“接收适配器的 IP 地址是什么?"不是我们在 中获得的发件人地址 receive_from( ..., &senderAddr, ... ); 打电话. 解决方案 您可以枚举所有网络适配器,获取它们的 IP 地址 ..
发布时间:2022-01-22 16:48:32 C/C++开发