草庐IT

tcp-accept

全部标签

tcp - 为什么 TIME_WAIT 状态需要 2MSL 长?

在一个TCP连接中,要求执行主动关闭的一端在TIME_WAIT状态停留2MSL的时间。为什么它需要2MSL?很多人说一个MSL是给最终ACK的,另一个MSL是给重传的FIN的。但是,FIN的RTO比MSL短很多,FIN不需要等待MSL重传。所以,他们的解释对我来说没有意义。任何人都可以举出一个具体的例子来说明那段时间段是如何交换的吗? 最佳答案 图1.TCP连接的数据包交换。为什么会存在TIME_WAIT状态?>一书给出了答案:TherearetworeasonsfortheTIME_WAITstate:ToimplementTCP

c - Linux TCP/IP 诊断为什么在 C 程序中 TCP/IP read() 返回 0

我有许多C程序在Linux主机(RHEL6.6)上运行。它们与同一主机上的其他应用程序有TCP/IP连接。每个连接上的流量很少。每隔一段时间,对同一主机上进程的其中一个套接字的read()调用会返回0。这些套接字通常在应用程序的生命周期内保持不变,因此它们在正常操作期间不会完全关闭。我希望如果发生错误,例如另一端崩溃,read()将返回-1并设置errno。所以,问题是-除了TCP/IP连接被另一端彻底关闭(shutdown(fd);close(fd))之外,是否还有其他原因会导致read()调用返回0?read()的手册页指出仅在EOF时返回0,而recv()手册页指出它返回“当对等

tcp - ffmpeg 编码力 rtsp 输出流使用 TCP 作为 rtsp_transport

我正在使用FFMPEG库编写一个RTSP发布程序。输入一直在读取从相机接收数据的缓冲区。我使用rtspurl作为输出。即avformat_alloc_output_context2(&ofmt_ctx,NULL,“rtsp”,输出)。现在我需要强制输出使用TCP作为rtsp_transpot。我试过下面的代码。但它不起作用。还有其他方法可以实现吗?谢谢。AVDictionary*options=NULL;av_dict_set(&options,"rtsp_transport","tcp",0);ret=avformat_open_input(&fmt_ctx,avio_ctx->bu

python - 如何在不关闭 tcp 套接字的情况下发送文件结尾

我正在尝试通过python编码的对等聊天系统中的tcp套接字发送文件。接收套接字似乎不知道没有更多的文件要接收。我可以让接收套接字不预料到未到来的数据的唯一方法是关闭发送套接字(使用socket.shutdown(socket.SHUT_WR))。但是,关闭发送套接字不是一个选项,因为我需要该套接字来发送其他消息。我首先尝试为文件发送/接收分配一个新端口,但失败了。现在,我已经尝试创建一个文件结尾“信号”,但它没有在接收端被识别为与tcp段分开的消息,所以我被卡住了。发送代码如下所示:defsendFile(self,filePath):try:f=open(filePath,'rb'

c# - TCP 服务器高 CPU 使用率

C#VisualStudio2013我正在研究一个粗略的TCP服务器/客户端。它是这样工作的:客户端向服务器发送消息>服务器向客户端发送“响应”。我有一个循环,因为我将在游戏中使用这种数据传输进行多人游戏。但是,我进行了性能测试,因为当超过三个客户端连接时,我的TCP服务器使用了大量CPU。性能分析器表示以下方法占96%的利用率。你能帮我解决这个问题吗?privatestaticvoidReceiveCallback(IAsyncResultAR){Socketcurrent=(Socket)AR.AsyncState;intreceived;try{received=current.

sockets - 在标准机器学习中使用 TCP

我正在尝试用标准ML编写一个最小的TCP服务器,但出现了一些我不理解的类型错误。到目前为止我得到的是funsendHellosock=letvalres="HTTP/1.1200OK\r\nContent-Length:12\r\n\r\nHelloworld!\r\n\r\n"valwds=map(fnc=>Word8.fromInt(Char.ordc))(String.exploderes)valslc=ArraySlice.full(Array.fromListwds)inSocket.sendArr(sock,slc)Socket.closesockendfunacceptL

Scala - 使用 Akka 的 TCP 数据包框架

在Akka中有什么方法可以像在Erlang中那样使用{packet,4}实现数据包框架?数据包看起来像这样:4byteslengthinbigendian|body...例如:00000005HELLO0005WORLD将是两个数据包“HELLO”和“WORLD”,但它们被作为一个数据包接收。或者00000005HELL现在Akka接收到这8个字节,但还缺少一个字节,它将在下一次调用“接收”时接收问题是我的Actor的接收总是被部分或全部请求调用,但我只想在接收中获得“body”部分,并且只有在它被完全接收时。因此,它所需要的只是首先读取这4个字节,然后等待读取其他N个字节(N=4字节

sockets - 使用 TCP 类与 WebSocket 服务器通信

是否可以使用标准TCP类向WebSocket服务器接口(interface)发送和接收数据/消息/帧?或者我是否需要从根本上改变TCP类?如果可能的话,你能给我举个例子吗?(编程语言并不重要)例如,我找到了代表简单tcp客户端的node.js代码:varnet=require('net');varclient=newnet.Socket();client.connect(1337,'127.0.0.1',function(){console.log('Connected');client.write('Hello,server!');});client.on('data',functi

linux - TCP/IP : set socket option for keep-alive after connection has been established

是否可以在一些假设的应用程序级握手后设置套接字的SO_KEEPALIVE选项(TCP保持事件间隔和TCP保持事件值)?还是必须在调用accept之前设置?我关心Linux、Windows和eCoslwIP堆栈之间的互操作性,因此非常感谢有关这两个平台的信息。 最佳答案 正如EJP所说,你可以随时设置。manpage说:setsockopt()manipulateoptionsforthesocketreferredtobythefiledescriptorsockfd.你可以像这样设置或取消设置SO_KEEPALIVEintiOpt

sockets - 解析一个tcp连接的结束

TCP连接可以通过多种方式结束。这是我的理解:rst:立即执行。连接完成,并立即关闭。所有进一步的通信都是"new"连接。fin:是来自一方的一个很好的请求。它必须被ack知道,然后另一方发送一个fin说他们已经结束了谈话。这也必须ack知识。这些阶段可以同时发生,但必须传递fin和伴随它的ack。还有其他的吗?我正在查看Wireshark中的一个tcp流,它只发送了一个fin、psh和ack位。这被确认并且连接结束。还有哪些关闭TCP连接的其他方法?如果fin被ack,是否可以发送更多数据?如果是,是否需要重新发送原始fin(发送fin的一方的状态是否在某个时候重置)?