草庐IT

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

我只在尝试这段代码时收到TCP消息:fromsocketimport*fromselectimportselectdefread_tcp(s):whileTrue:client,addr=s.accept()data=client.recv(8000)client.close()print"RecvTCP:'%s'"%datadefread_udp(s):whileTrue:data,addr=s.recvfrom(8000)print"RecvUDP:'%s'"%datadefrun():host=''port=8888size=8000backlog=5#createtcpsock

node.js - 我应该使用 WebRTC 还是 Websockets(和 Socket.io)进行 OSC 通信

我正在开发一个应用程序,它将发送OSC控制消息,据我所知,这是一个数据报包,从网页到OSC接收器(服务器),例如Max/MSP或Node或任何其他。我知道通常使用UDP,因为速度在使用OSC完成的实时/视听控制工作中很重要(这也是我将要做的工作),但我知道可以使用其他方法。例如,现在我将OSC从浏览器发送到node.js服务器(使用socket.io),然后从node.js服务器发送到Max(这是我最终想要数据的地方),还有使用socket.io。我相信这意味着我正在使用websockets并且延迟/延迟还不错。不过,我很好奇,既然WebRTC已经出来了,我是否应该把我future的工

c++ - 了解 TCP 数据包大小限制和 UDP 数据包大小限制及其在 boost::asio 编程级别的含义

我正在使用boost::asio在我的客户端应用程序和服务器应用程序中执行UDP以及TCP通信。我发现我只能使用UDP传输大小为65535字节的数据,因为它似乎是UDP中的最大数据包大小。TCP中也有最大数据包大小限制,即65535字节?但是我可以在TCP中使用boost::asio::write发送大于最大数据包大小的block,并在客户端应用程序上读取它。我看到我不必担心TCP中的最大数据包大小,但在UDP中我确保每个socket.send_to都使用小于maxpacketsize的缓冲区完成>这是如何工作的?这是因为TCP是基于流的,负责在较低层创建数据包吗?有什么方法可以增加U

sockets - 为什么 UDP 服务器中只有一个套接字?

我正在备考,发现了这个问题:AtypicalUDPservercanbeimplementedusingasinglesocket.Explainwhy,foraTCPdrivenserver,Ifindthattwosocketsarecreated-onewhereallclientsapproachtheserver,andonespecific(socket)foreachclientforfurthercommunicationbetweentheserverandclient.这是(在我的理解中)由并发问题驱动的(希望不要在联系点地址上与单个客户端进行过多通信)。我知道UD

networking - TCP 兼容性 : Why is TCP not compatible with packet broadcast and multicasting actions?

**http://en.wikipedia.org/wiki/User_Datagram_Protocol:**“与TCP不同,UDP兼容数据包广播(发送给本地网络上的所有人)和多播(发送给所有订阅者)。” 最佳答案 “兼容”在这里是一个非常糟糕的选择。真正描述的是“支持”。TCP是一种点对点协议(protocol),从设计上讲。时期。TCP多播是一个自相矛盾的术语。编辑:我更新了维基百科页面以反射(reflect)此评论。编辑2:令人难以置信的是,自发布此问题以来,有人已从维基百科UDP页面中删除了所有提及多播的内容。我修好了它。

c# - 要每 50 毫秒发送一次图像,我应该使用 TCP 还是 UDP?

我正在构建一个C#应用程序,使用服务器-客户端模型,其中服务器每50毫秒通过一个套接字向客户端发送一个图像(100kb)...我使用的是TCP,但除了该协议(protocol)的开销之外,有时客户端最终会在套接字上拥有多个图像。而且我还没有想出一个巧妙的机制来拆分每个图像的字节(实际上,我只需要最新的一个)。我尝试使用UDP,但得出的结论是我无法发送100kb的dgram,只能发送64kb的。即便如此,我也不应该使用超过1500字节;否则数据包将在网络上被分割,丢失部分数据包的可能性会更大。所以现在我有点困惑。我是否应该继续使用TCP并在每个图像的末尾放置一些转义字节,以便客户端可以将

c++ - 用于实时视频流的流协议(protocol)和套接字类型

我正在构建一个用C++编写的视频服务器,将实时视频流式传输到用php和html编写的网络视频客户端,以实现视频聊天。什么类型的协议(protocol),例如。我应该使用“UDP、TCP、RTP、RTSP、MMS、阻塞、非阻塞”将实时和不断变化的视频流式传输到我的网络客户端。我尝试使用TCP协议(protocol)使用非阻塞套接字流式传输视频,但视频在播放第一个流式传输的剪辑后停止,它不会继续播放后续流式传输的剪辑。我知道的一个例子是使用WindowsMediaEncoder从您的网络摄像头流式传输内容,并使用您的浏览器访问它,只需一个简单的嵌入标记,如下所示:我还想知道WindowsM

TCP 在 UDP 上引起的数据包丢失和学士论文引用

我目前正在撰写计算机科学与工程专业的学士论文,我们正在使用OpenGL使用C++创建一款赛车游戏。在报告中,我比较了TCP和UDP的使用,我发现了source,声称多个TCP连接会导致UDP连接中的数据包丢失。我什至得到了一个很好的reference问题在于它已有13年的历史,但我还没有找到任何迹象表明任何协议(protocol)都已修改以解决此问题。我也找不到任何更新的、进行类似调查的论文或文章因此,我的问题是协议(protocol)是否有任何可能相关的更改和/或我是否应该忘记在论文报告中使用这个旧引用。 最佳答案 阅读文章中的重

networking - UDP 打洞 : one Symmitric and another non-symmetric NAT

我正在尝试使用打洞实现P2P。这是流程:两个Peers(P1,P2)将向服务器(S)发送1个数据包。Server(S)回复都告诉别人IP:PORTP1和P2接收此UDP数据包,知道对方的外部/公共(public)ip:port。P1,P2开始向其他对等端公共(public)IP:PORT发送数据包。一旦对等点收到其他对等点的数据包,我就认为这个洞已经打好了,并将这个套接字提供给我的应用程序。我在不同的路由器上进行了测试,结果如下:当P1和P2都在非对称NAT(完整/受限锥形)上时,我没有遇到任何问题。当P1=非对称且P2=对称时:-----router-1(对称NAT)+router-

qt - 将 QHash 序列化为 QByteArray

我正在尝试序列化一个QHash对象并将其存储在QByteArray中(使用QUDPSocket或QTCPSocket发送)。我目前的尝试是这样的://main.cpp#include#include#include#includeintmain(intargc,char*argv[]){QHashhash;hash.insert("Key1",1);hash.insert("Key2","thing2");QByteArrayba;QDataStreamds(&ba,QIODevice::WriteOnly);ds当它运行时,我从qDebug()中得到它:QIODevice::read