草庐IT

TCP_CORK

全部标签

java - 检测 TCP/IP 数据包丢失

我通过如下套接字代码进行tcp通信:publicvoidopenConnection()throwsException{socket=newSocket();InetAddressiNet=InetAddress.getByName("server");InetSocketAddresssock=newInetSocketAddress(iNet,Integer.parseInt(port));socket.connect(sock,0);out=newPrintWriter(socket.getOutputStream(),true);in=newBufferedReader(new

sockets - 是否需要通过 TCP 进行应用程序级重传和确认?

我有以下问题:1)TCP是否保证数据包的传送,因此如果使用的传输协议(protocol)是TCP,则是否需要应用程序级重传。假设我已经在客户端和服务器之间建立了TCP连接,服务器向客户端发送了一条消息。然而,客户端离线并在大约10小时后才恢复正常,那么TCP堆栈是否会处理重新传输和向客户端传递消息,或者服务器上运行的应用程序是否需要处理它?2)与上述问题相关,如果传输协议(protocol)是TCP,是否需要应用程序级别的ACK。应用程序ACK的原因之一是,如果没有它,应用程序将不知道远程端何时收到消息。除此之外还有什么原因吗?意思是消息本身的传递是有保证的吗?

c++ - 在 C++ 中通过 tcp 套接字发送结构

我正在尝试通过tcp套接字发送结构。我是套接字编程的新手,我确实已经尝试过这里建议的选项,但那些并没有达到我的目的。有人可以帮忙吗?我已经编写了Server.cpp和Client.cpp,并且都可以正确编译。但是,当我执行服务器以监听客户端时,我不确定服务器是否能够从客户端接收结构。另外,一旦收到这个结构,我该如何阅读?服务器.cpp#include#include#include#include#include#include#include#includeusingnamespacestd;intmain(){structUE{stringNet;intimsi;};UEUE2;/

c - TCP 套接字 : Can read() still fail with EINTR when select() indicates there are data available?

我正在使用select()从TCP套接字进行非阻塞read()。当select()指示有数据可供读取时,我不确定在read()之后是否还需要处理EINTR。 最佳答案 是的,绝对是。select函数是一个状态报告函数,它会在您调用select和您注意到它的返回值之间的某个时间报告某物的状态。它绝对没有任何future保证。这是一个非常普遍的误解。但是认为select确保future的操作将提供某些特定结果的想法与认为检查磁盘上是否有可用空间意味着future的写入不会失败一样是错误的。根据其判断,即使您认为有足够的可用空间,该实现也

networking - TCP连接基础

这是一个基本的疑问,但我想知道如果在相同的两台机器之间建立两个TCP连接,两个连接中的数据包是否会遵循相同的路径(相同的链路和节点)。我问这个问题的原因是因为我想测量两台机器之间的IPv4和Ipv6TCP连接带宽,并且我想确保这两个连接遵循相同的路径。 最佳答案 除非您可以控制两台主机之间的网络和路由,否则您永远不应该做出这样的假设。对于IPv4与IPv6尤其如此,因为还没有太多的本地IPv6网络,并且隧道可能遵循与“直接”IPv4截然不同的路由。更糟糕的是,IIRC没有什么能阻止一些中间网络通过一个链路路由一半的数据包,另一半通过

C#:无法在 TCP 服务器上接收大数据

我已经创建了一个TCP服务器。我面临一个问题。我的TCP服务器没有接收到大于30000字节的数据。接收数据的代码MAX_TCP_DATA=64000privatevoidProcess(){if(client.Connected==true){log.InfoFormat("Clientconnected::{0}",client.Client.RemoteEndPoint);Byte[]bytes=newByte[MAX_TCP_DATA];Stringdata=null;NetworkStreamstream=client.GetStream();inti;try{//Loopto

tcp - 在 erlang 中使用 tcp 发送原始二进制文件

我在erlang中有一个使用tcp的基本客户端服务器。如何将文件中的实际二进制数据发送给请求它的客户端?文件是如何分段发送的?我有这个代码{好的,套接字}=gen_tcp:connect({Ip},2345,[二进制,{数据包,4}]),这个{packet,4}是否处理双向发送的数据大小?此外,客户端如何接收数据然后对其进行处理?喜欢将其保存到文件吗?谢谢 最佳答案 是-{packet,4}将导致erlang在接收时需要一个4字节无符号大端整数长度值的数据包帧,并在发送每个数据包之前发出一个。您可以通过调用gen_tcp:send(

Node.js 回复 tcp 服务器

我正在尝试在node.js中创建一个简单的回复服务器我遇到的问题是,当我远程登录到服务器并发送一个问候时,if循环没有捕获它,它转到了else。下面是我的代码:varnet=require('net');varserver=net.createServer(function(socket){//Serverstartsocket.write('Welcome\n');socket.on('data',function(data){dataReceived(socket,data);});});server.listen(8250);functiondataReceived(socket

java - Java 中可靠的 TCP/IP

有没有一种方法可以使用java.net.*中的JavaTCP/IP库进行可靠的通信(发送方获知它发送的消息已被接收方接收)?我知道TCP相对于UDP的优势之一是它的可靠性。然而,我无法在下面的实验中得到这种保证:我创建了两个类:1)echoserver=>总是发回它接收到的数据。2)client=>定期向回显服务器发送“Helloworld”消息。它们在不同的计算机上运行(并且运行良好)。在执行过程中,我断开了网络连接(拔下了LAN电缆)。断开连接后,服务器仍在等待数据,直到几秒钟过去(最终引发异常)。同样,客户端也一直发送数据,直到几秒钟过去(引发异常)。问题是,objectOutp

c++ - 如何处理 Perl TCP 套接字中的消息碎片?

我在Perl客户端和C++服务器之间有一个套接字通信。Perl代码:if(!socket(SERVER,AF_INET,SOCK_STREAM,getprotobyname('tcp'))){die"Can'tallocatesocket\n";}elsif(!connect(SERVER,sockaddr_in($PORT,$tcp_addr))){die"Can'tconnecttoserverat$tcp_addrport$PORT...\n";}SERVER->autoflush(1);printSERVER"$line";如果$line太长,它就会被碎片化,在C++服务器端我