草庐IT

Networking

全部标签

networking - 为什么游戏开发者在应用层面避开TCP而让UDP可靠?

许多游戏开发者选择在应用程序级别中制作UDP可靠。TCP不正是为此而生的吗?我制作了一个API,可以使用UDP和TCP数据包启用客户端-服务器通信。我应该将ReliableUDP添加到列表中吗?为什么?如果我使用TCP会有问题吗?我只是想知道RUDP是否比TCP有任何优势,以便我可以选择是否添加RUDP支持。 最佳答案 简短回答:TCP没有针对延迟进行优化(根本没有);结果-它有几个属性,这些属性是游戏的延迟killer(尽管它们只有在数据包丢失时才会发挥作用)。特别是,线头阻塞和指数退避对于快节奏游戏来说往往非常烦人。对延迟影响最

networking - google talk 使用 udp 还是 tcp 数据包?

是否可以判断googletalk是使用tcp还是udp包进行传输。我知道它在应用层使用xmpp协议(protocol),但它是通过tcp还是udp运行的。 最佳答案 您可以通过使用数据包嗅探器观察流量来自己回答这个问题。这比让我们告诉您答案更有启发性。 关于networking-googletalk使用udp还是tcp数据包?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/162

java - 套接字连接超时 : where is the specification?

我的工作环境是我的局域网。下面的代码示例是用Java语言编写的,但我的问题是关于TCP,而不是编程。我遇到了以下连接超时:>2mswhenconnectionestablished1005毫秒,当主机处于Activity状态但未监听指定的套接字端口时主机宕机时21000毫秒此值来自对我的网络的观察,但我认为它存在一个RFC。这里有一些关于超时的信息:RFC1122RFC793Nagle's_algorithm和TCP_NO_DELAY你能给我更多的指点吗?@Overridepublicvoidrun(){for(intport=_portFirst;port

c - 处理多个 recv() 调用和所有可能的场景

我对C和编写TCP服务器相当陌生,想知道如何处理来自客户端的recv(),客户端将发送服务器将响应的命令。对于这个问题,我们只说header是第一个字节,命令标识符是第二个字节,有效负载长度是第三个字节,然后是有效负载(如果有的话)。recv()此数据的最佳方法是什么?我想调用recv()将前3个字节读入缓冲区,检查以确保header和命令标识符有效,然后检查有效负载长度并调用recv()再次使用有效负载长度作为长度并将其添加到上述缓冲区的后面。然而,阅读Beej的网络文章(特别是SonofDataEncapsulation部分),他建议使用“一个足够大的数组来容纳两个[最大长度]数据

基于 C++ STL 的二进制序列化数据发送,使用套接字进行网络传输,无需使用库

我需要通过网络将一些复杂的对象发送给对等点。我已经为需要序列化的对象中的每个类成员编写代码,使用ostream和operator我有一个Socket类,它将std::string对象转换为C风格的字符串,然后像这样通过套接字发送它们:intSocket::send(conststd::stringgoodies)const{status=::send(socket,goodies.c_str(),goodies.size(),0);returnstatus;}我在接收器中使用的相同Socket类在将传入消息传递给反序列化应用程序之前使用recv()将传入消息放入std::string中

networking - 为什么 TCP/IP 套件中的最大端口范围是 65535?

我的疑问是-一个端口是合乎逻辑的,那么为什么要这样限制呢?为什么我不能有9924593或类似的端口? 最佳答案 查看packetformat对于TCP段。端口标识符是无符号的16位整数,这意味着您可以输入的最大数字是216-1=65535。 关于networking-为什么TCP/IP套件中的最大端口范围是65535?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3679618

http - 如何重新组装tcp段?

我现在正在使用winpcap开发一个项目..因为我知道被嗅探的数据包通常是碎片化的数据包。如何重组这个TCP段?..有什么想法、建议或可用的教程吗?..我认为这是我可以查看HTTPheader的唯一方法...谢谢!.. 最佳答案 tcp是一种字节流协议(protocol)。您的http应用程序发送的字节序列被封装在tcp数据段中,并且在将数据传递到另一端的应用程序之前重新创建字节流。由于您正在使用winpcap访问tcp数据段,因此您需要转到数据段的数据部分。tcp的header固定长度为20个字节+您需要使用winpcapapi确

c - 崩溃后恢复与服务器的连接

我有一个连接到服务器的客户端(TCP连接)。在服务器崩溃(我断开连接)的情况下,我的客户端需要连接到另一台服务器,以便继续服务。但是当第一台服务器回来时,我需要再次将客户端重新连接到它。在第一台服务器崩溃后,我能够将我的客户端连接到备份服务器,但是我在将我的客户端重新连接到第一台服务器时遇到了问题。我创建了一个函数create_newconnect()用于重新连接到服务器,但它不起作用(这就是为什么我没有在代码中调用它)我尽量简化我的程序,所以它不会太大这是客户端#include#include#include#include#include#include#include#inclu

Android VpnService - 如何转发拦截的互联网流量?

我已经关注了这个link并使用VpnService创建了Vpn接口(interface)。将转发路由添加为“0.0.0.0”后,所有互联网流量都会转发到Vpn接口(interface)。我可以读取数据包、访问协议(protocol)、目标ip和端口。现在我正尝试通过tcp套接字将数据包转发到它的目的地。但是套接字连接失败,连接超时。exception:java.net.ConnectException:failedtoconnectto/74.125.227.114(port443):connectfailed:ETIMEDOUT(Connectiontimedout)注意:当我尝试使

Python 套接字点对点

我正尝试在Python2.7中创建一个简单的点对点网络。问题是,我似乎无法在两台同时充当服务器和客户端的机器之间建立连接。当一个是服务器而另一个是客户端时,我可以让它工作,但当它们都是时,我就不能工作。我需要创建2个套接字吗?我还使用TCP进行连接。更新:importsocket,sys#Importsocketmodules=socket.socket()#Createasocketobjecthost=socket.gethostname()#Getlocalmachinenameport=12345#Reserveaportforyourservice.s.bind((host,