WindowsXP和windowsvista之间设置UDP多播套接字所需的实现似乎有所不同。具体来说:在WindowsXP下,您必须调用bind(),然后才能引用任何特定于多播的套接字选项。但是,在windowsvista下,您不得在处理多播套接字时调用bind()。这两点中的任何一个失败都会导致运行时出现套接字错误。我是不是疯了,还是其他人也看到了?有没有比bind()调用的条件编译更好的解决方案? 最佳答案 在应用IP_ADD_MEMBERSHIP并加入多播组时调用setsockopt()会出现什么错误?我刚刚在这里用我的服务器
我有一个UDP套接字在端口中监听广播传输,它工作正常。但是,当我休眠并恢复操作系统(Windows7)时,套接字只是停止接收数据(并且我可以看到有数据使用Wireshark到达)。如果我更改任何网络设置,如更改我的IP地址、禁用和启用网络适配器,也会发生这种情况。操作系统似乎在休眠时禁用所有网络适配器,并在恢复时重新启用它们。select只返回0(超时),这与我没有收到任何数据时没有什么不同。我在任何地方都找不到对这种行为的任何引用。如果我关闭套接字并重新创建它,它会再次开始工作。我的TCP监听套接字在恢复操作系统后仍然工作正常。关于如何检测和纠正这种情况有什么想法吗?编辑:它仍然可以
我遇到了一些问题,我猜是代码问题。该应用程序用于“ping”一些定制的网络设备以检查它们是否存在。它每20秒使用一个特殊的UDP数据包对它们执行ping操作,并期待响应。如果他们未能连续3次回答ping,应用程序会向工作人员发送一条警告消息。应用程序全天候24/7运行,并且一天有随机次数(大部分是2-5次)应用程序在10分钟的准确时间内无法接收UDP数据包,之后一切恢复正常。在那10分钟内,似乎只有1台设备在回复,其他设备似乎已经死了。我已经能够从日志中推断出这一点。我已经使用wireshark嗅探数据包,并且我已经验证了ping数据包同时进出,所以网络部分似乎工作正常,一直到操作系统
我有一个监听本地主机端口的应用程序。我想要一个最小的启动器来将该应用程序带到最前面。我的应用程序是用Java编写的。我不知道如何编写任何exe文件,但我可以编写bat文件,然后制作一个快捷方式,在不显示终端的情况下启动bat文件。我想让bat文件将一些数据发送到端口(最好是UDP,这样就不会有任何流开销)。如何将数据发送到UDP端口?我想到的其中一件事是nslookup,但据我所知,它只会连接到端口53。这只需要在Windows上工作。希望它能在XP及更高版本上运行,但如有必要,我可以制定解决方法。 最佳答案 这是netcat的工作
我正在尝试使用C++中的套接字接收UDP消息。我在header中发送消息的大小,所以我可以知道我应该分配多少内存,所以我尝试像这样查看消息的开头:intbytesRead=recvfrom(m_socketId,(char*)&header,Message::HeaderSize,MSG_PEEK,(structsockaddr*)&fromAddr,&addrSize);但我不断收到系统错误10040:"Amessagesentonadatagramsocketwaslargerthantheinternalmessagebufferorsomeothernetworklimit,o
我几乎是偶然发现我的机器正在向波兰的一台机器发送和接收UDP数据包。并不是说我对波兰有任何问题,我只是不知道为什么我的笔记本电脑需要与那里的服务器通信。反向DNS仅显示ISP向某些最终用户提供地址。使用Wireshark,我可以监控消息,这些消息可能已加密,因此无法辨认。从我的机器发送的所有数据包都有相同的源端口,所以很明显发送它们的应用程序打开了这个UDP套接字来使用它。我正在寻找方法:1)枚举系统中所有当前打开的套接字,包括创建它的进程,以及对于TCP和UDP,它们当前绑定(bind)到的端口和地址。2)因为应用程序可以打开这些套接字、使用它们并立即关闭它们,所以我很想找到(或者甚
我正在寻找一种适用于Windows的工具(或一组工具)来执行以下操作:捕获从特定网络接口(interface)到文件的UDP数据包。通过网络接口(interface)播放文件中的数据包流。除了2:将原始数据包重播到与原始主机不同的主机。我已经有了1和2,但我找不到做3的工具。对于捕获,我可以使用Wireshark,用于播放ColasoftPacketPlayer,但我找不到更改数据包发送到的主机的方法。该工具应该可以在WindowsXPSP2/3上运行。 最佳答案 BitTwist(http://bittwist.sourcefor
我正在使用2台带有应用程序的计算机来发送和接收udp数据报。没有流量控制,ICMP被禁用。当我通过应用程序将文件作为UDP数据报发送时,我经常会收到两个数据包更改它们的顺序,因此-数据包丢失。我已经禁用了某种防火墙,计算机之间没有连接硬件交换机(它们是直接连线的)。有没有办法确保Winsock和send()将按照到达那里的方式发送数据包?或者操作系统正在这样做?或者需要网络设备配置? 最佳答案 UDP是一种轻量级协议(protocol),其设计不会处理诸如数据包排序之类的事情。如果您想要可靠的数据包传送和排序,TCP是更好的选择。U
我有一个接收、处理和传输UDP数据包的应用程序。如果接收和传输的端口号不同,一切正常。如果端口号相同而IP地址不同,则通常可以正常工作,除非IP地址与运行应用程序的计算机位于同一子网中。在后一种情况下,send_to函数需要几秒钟才能完成,而不是通常的几毫秒。RxPortTxIPTxPortResult5001Same5002OKDelay~0.001secssubnet5001Different5001OKDelay~0.001secssubnet5001Same5001FailsDelay>2secssubnet这是一个演示问题的简短程序。#include#include#incl
如果我使用UDP套接字进行进程间通信,我是否可以期望所有发送的数据都以相同的顺序被其他进程接收?我知道一般情况下UDP并非如此。 最佳答案 没有。我以前被这个咬过。您可能想知道它怎么可能会失败,但是您会遇到待处理数据包的缓冲区已满的问题,因此数据包将被丢弃。网络子系统如何丢弃数据包是依赖于实现的,并且没有在任何地方指定。 关于c-通过同一台机器上的UDP套接字发送数据是否可靠?,我们在StackOverflow上找到一个类似的问题: https://stack