草庐IT

networking - 什么时候使用 UDP 而不是 TCP 合适?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭5年前。Improvethisquestion由于TCP保证数据包交付,因此可以被认为是“可靠的”,而UDP不保证任何事情,数据包可能会丢失。在应用程序中使用UDP传输数据而不是

ios - iOS 上的 UDP 广播/设备发现?

我正在尝试开发一种方法,通过iOS应用程序在我的本地网络上发现LogitechHarmonyHub设备。这个概念的灵感来自thisNODE.JS项目,它似乎向255.255.255.255地址发送UDP广播,然后获取Logitech的IP地址(这就是我所追求的)。在我的Mac上测试家庭网络上的NODE.JS项目时,它成功找到了LogitechHarmonyHub。我正在使用CocoaASyncSocket,并且必须承认,我对UDP广播/发现如何工作的理解在这里可能有偏差。这就是我正在做的;importUIKitimportCocoaAsyncSocketclassViewControl

java - 如何在 Java 中实现基于线程 UDP 的服务器?

如何在Java中实现基于UDP的线程服务器?基本上我想要的是将多个客户端连接到服务器,并让每个客户端都有自己的线程。唯一的问题是,我不知道如何检查客户端是否正在尝试连接到服务器并为其生成新线程。booleanlistening=true;System.out.println("Serverstarted.");while(listening)newServerThread().start();在这种情况下,服务器将产生新的线程,直到它耗尽内存。这是ServerThread的代码(我想我在这里需要一种机制来停止ServerThread的创建,直到客户端尝试连接。publicServerT

java - 我的服务器应该同时使用 TCP 和 UDP 吗?

我正在编写客户端/服务器应用程序,但确实找不到适合我需要的指南。自己动手会导致我在开始之前就出现许多设计缺陷。例如,服务器应该每秒多次更新每个客户端的状态。我以为我不能单独更新每个客户端,但UDP广播应该可以解决这个问题。但我仍然需要一个TCPchannel来与每个客户端可靠地通信,例如:聊天消息、用户输入等。研究这个主题似乎服务器可以同时使用这两种协议(protocol)-但只是可能(不合理)。没有人建议这种方法,事实上我是从thisarticle收集的两者都使用是相当糟糕的。现在我很困惑应该如何处理服务器中的数据。除非我完全误解了关于数据包丢失的一些事情,否则我想保证导致“服务器请

java - UDP 打洞 Java 示例

我想在具有静态IP的服务器的帮助下对两个客户端进行UDP打洞。服务器在端口7070和7071上等待两个客户端。之后,它向对方发送IP地址和端口。这部分工作正常。但是我无法在两个客户之间建立通信。我在不同的Wifi网络和3G移动网络中尝试了代码。客户端程序抛出IO-Exception“Noroutetohost”。客户端代码用于两个客户端。一次使用端口7070执行,一次使用7071。您认为我是否正确地实现了UDP打洞概念?有什么想法让它发挥作用吗?首先是服务器代码,然后是客户端代码。谢谢你的帮助。服务器代码:publicclassUDPHolePunchingServer{publics

java - Java UDP中如何获取实际数据包大小 `byte[]`数组

这是我上一个问题的后续问题:JavaUDPsend-receivepacketonebyone正如我在那里指出的那样,基本上,我想通过UDP一个接一个地接收数据包。这是一个示例代码:ds=newDatagramSocket(localPort);byte[]buffer1=newbyte[1024];DatagramPacketpacket=newDatagramPacket(buffer1,buffer1.length);ds.receive(packet);Log.d("UDP-receiver",packet.getLength()+"bytesoftheactualpacket

java - 为什么即使进程在本地运行,我的 UDP 数据报也会乱序?

我正在开发流式服务器和Flash客户端之间的Java接口(interface)。我注意到即使两个进程都在本地运行,UDP数据报也可以乱序到达我的接口(interface)。这正常吗?我认为,由于没有数据报必须通过任何路由器或任何网络设备,因此不应该发生这种情况。 最佳答案 这将取决于操作系统。虽然您未能指定操作系统,但它并不重要。为了保持可移植性,您应该始终预料到您的数据报套接字会接收乱序数据。 关于java-为什么即使进程在本地运行,我的UDP数据报也会乱序?,我们在StackOver

python - netcat 发送额外的 "X"UDP 数据包

从here窃取我已经设置了一个小的Python脚本,它监听一个端口并打印出它接收到的所有UDP数据包:importsocketUDP_IP="127.0.0.1"UDP_PORT=5005sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)sock.bind((UDP_IP,UDP_PORT))whileTrue:data,addr=sock.recvfrom(1024)print"receivedmessage:",repr(data)现在我正在使用netcat将数据发送到此脚本。这是我的命令行。echo-e"foo:1|c"|ne

python - python中的udp速率限制?

原帖更新:一位同事指出我做错了什么。我会在帖子底部给出解释,因为它可能会有所帮助对于其他人。我正在尝试对网络性能的限制有一个基本的了解的python程序,并遇到了异常。代码片段while1:sock.sendto("a",target)将UDP数据包发送到目标机器,与主机发送的速度一样快。我测量的发送速率刚刚超过每秒4000个数据包,或250us每包。这看起来很慢,即使对于像python这样的解释型语言也是如此(该程序运行在2GHzAMDopteron、Linux、python版本2.6.6上)。我在Python中看到了更好的TCP性能,所以我觉得这有点奇怪。如果我在后台运行它并运行t

python - 在 Python 中通过 SOCKS5 代理代理 UDP

是否可以使用任何SOCKS客户端库在Python中通过SOCKS5代理发送UDP数据报?SocksiPy似乎不起作用,或者我只是用错了。以下代码不起作用,它尝试直接连接到目的地:s=socks.socksocket(socket.AF_INET,socket.SOCK_DGRAM)s.setproxy(socks.PROXY_TYPE_SOCKS5,"socks.proxy.lan")s.sendto(payload,(ip,port))如果我将SOCK_DGRAM更改为SOCK_STREAM代码也不起作用,它不会尝试连接到任何地方。 最佳答案