草庐IT

TCP_CORK

全部标签

c++ - 关于数据包和缓冲区大小的 TCP 套接字编程

我知道在TCP中没有数据包的概念,因为它是一个流套接字,那么例如,如果我有一个2000字节的数据包,比如2000'a',并且我的默认缓冲区大小是1024,那么它是应该发送两次并接收两次?所以对于send()函数,iResult=send(s,sendbuf,packet_size,0);第二个参数应该填什么?分配了1024字节的发送缓冲区字符指针或分配了2000字节的数据包字符指针,它会自动为我处理?对于recv()阻塞函数,我应该将缓冲区字符指针指向第二个参数还是数据包参数?对于header,我的friend建议我添加4个字节的header来存储数据包信息,例如。数据包的序列号和大小

sockets - 什么是 TCP 连接的开销流量(加上 TCP 说明)?

我们有一个TCP连接。没有发送任何东西;每秒需要多少流量(字节)才能保持该连接打开?打开从南美客户端到北欧服务器的连接需要多长时间?如果我必须以x秒的时间间隔发送少量数据(最多256字节),x是什么更好地关闭连接并再次重新打开而不是保持连接始终打开?我不期望确切的数据-估计就足够了。 最佳答案 1)没有。2)一段时间。试试看。粗略估计,从一端连接另一端并将其加倍。3)试一试。这取决于带宽,更重要的是,延迟。这些变化范围很广。通常,从速度上讲,保持连接打开会更好。以秒为间隔256个字节?我会保持连接打开,尤其是在可能具有高延迟的路径上

sockets - 大量连接使用 TCP 还是 UDP?

我想创建一个具有以下特征的P2P网络:低延迟并不重要丢包裹没关系节点只会在附近发送少量数据不会有NAT/防火墙问题,每个节点的公共(public)ip上都有一个开放端口每个节点都连接到每个其他节点通常我会将TCP用于任何对时间不敏感的事情,但最后一个要求会导致节点长时间拥有大量打开的连接。如果我没记错的话,使用TCP连接到1000个服务器意味着我必须使用1000个端口来处理这些连接。另一方面,UDP只需要每个节点一个端口。所以我的问题是:TCP是否能够在网络中处理上述要求,例如1000个节点而不调整系统?在这种情况下,UDP会更适合吗?还有什么会破坏这两种协议(protocol)的交易

C++ TCP recv 未知缓冲区大小

我想使用函数recv(socket,buf,len,flags)来接收传入的数据包。但是我在运行前不知道这个数据包的长度,所以前8个字节应该告诉我这个数据包的长度。我不想只分配一个任意大的len来完成这个所以是否可以设置len=8有buf是一个类型uint64_t。之后memcpy(dest,&buf,buf)? 最佳答案 由于TCP是基于流的,所以我不确定您指的是什么类型的包。我假设您指的是应用程序级包。我的意思是包是由您的应用程序定义的,而不是由像TCP这样的底层协议(protocol)定义的。为了避免混淆,我将称它们为消息。我

c# - 使用tcp将 float 组从c++发送到c#

我是tcp的新手,已经设置了两个应用程序,一个用c++发送数据,另一个用c#接收数据。我发送了两个float组,每个数组包含三个float。数据传输和解包都很好,但数据的顺序不一致。比如我发送float1、float2、float3,接收float2、float1、float3。我适用的c++是:floatposition[3];floatrotation[3];for(inti=0;i和C#:clientSocket=serverSocket.Accept();Console.WriteLine("Server:Accept()isOK...");Console.WriteLine(

本地主机的 c TCP 套接字连接被拒绝

我试图在本地主机上制作一个客户端/服务器程序,但客户端无法连接到服务器,我不知道我做错了什么。我试过调试程序,所有参数似乎都没有问题。服务器确实绑定(bind)、连接、监听和接受。使用客户端代码获取connect:Invalidargument错误。客户端(我使用./clientlocalhost从控制台调用客户端):#include#include#include#include#includeintmain(intargc,char*argv[]){intcd;structhostent*hp;structsockaddr_ins_ain;unsignedcharbyte;hp=g

c# - 为什么我的 python TCP 服务器需要绑定(bind)到 0.0.0.0 而不是本地主机或其 IP 地址?

我正在制作一个PythonTCP服务器和一个C#客户端,我让它工作了,但我不明白为什么它在工作,我希望有人能向我解释什么我迷路了。我正在尝试从我自己的网络内进行连接,因此不涉及防火墙。在我的python脚本中,如果我绑定(bind)到127.0.0.1或localhost我无法从我的C#脚本连接到它,所以我想也许它需要是DHCP服务器给它的本地IP地址,所以我尝试绑定(bind)到192.168.1.74(本地IP地址)。这仍然不起作用,但是如果我使用0.0.0.0作为我绑定(bind)的端口,我可以毫无问题地连接。Python服务器代码:defstartserver():global

php - SQLSTATE[HY000] [2002] 出于安全原因,已禁用在远程端口 3306 上建立 tcp 连接

我正在使用laravel5在子域中实现api,例如:api.domain.com我将laravel从本地复制到共享主机。在public_html/api文件夹中。在本地一切正常,但在服务器中出现此错误:PDOExceptioninConnector.phpline55:SQLSTATE[HY000][2002]Establishingtcpconnectionsonremoteport3306hasbeendisabledforsecurityreasons.当我尝试通过laravel5连接数据库时。我该怎么办? 最佳答案 在.en

tcp - Spring 集成 TCP。获取已连接客户端的连接 ID

我在这里遇到动态TCP连接方法(Spring-IPDynamicFTPSample)的问题。收到消息后,我想获取收到消息的TCP连接详细信息。这样我就可以在我的应用程序中跟踪发送该消息的发件人。但是在服务激活器中我无法获得这个细节。当我的TCP客户端连接到服务器时,还需要连接详细信息。这样,如果服务器想要启动通信,它将具有连接详细信息。有关信息,我的应用程序有多个TCP客户端和服务器。 最佳答案 在Mr.GaryRussell的另一个帖子中得到了答案回复。回答对于正常的请求/回复处理,使用入站网关,框架将负责将服务激活器回复路由到正

python - TCP 网络 - 手动编程 SYN、SYN ACK、ACK?

如果您正在编写一个基本的pythonTCP服务器和客户端,您需要自己添加SYN、SYNACK和ACK响应,还是由套接字模块处理?如果需要自己写,会这么简单吗?客户:#setupclientSocketdata="SYN"clientSocket.send(data.encode('utf-8'))if((clientSocket.recv(1024)).decode('utf-8')=="SYNACK"){data="ACK"clientSocket.send(data.encode('utf-8'))}服务器以类似的方式响应,检查recv是否为SYN,然后发送SYNACK。如果不是,