草庐IT

TCP_CORK

全部标签

c++ - c++中tcp服务器中的多线程

我已经用C++为多线程tcp服务器编写了这个类..并通过::编译g++-oserverserver.cpp-lpthread但是我收到以下错误::invalidconversionfrom"void*"to"void*(*)(void*)"initializingargument3of"intpthread_create(pthread_t*,constpthread_attr_t*,void*(*)(void*),void*)"我该怎么办??我的代码::#include"PracticalSocket.h"#include#include#includeusingnamespaces

c# - TCP 发送简单的洪水控制和同步 - P2P 网络摄像头

在来自SO的一些好人的帮助下,我慢慢地构建了一个小型P2P应用程序,可以发送和接收每张约4kb的图像流。在127.0.0.1上,接收跟上发送,但是当我在远程机器上尝试时,在我看来接收跟不上,我可能发送了6张图像,但接收者到目前为止只收到了一张。..随着时间的推移,差异越来越大,直到你在另一个屏幕上看到整整一分钟前的自己。值得注意的是,我希望它能在另一个国家/地区的大约64kbps-100kbps的连接上正常工作,那里的ping时间可能非常长,如250毫秒或更长。我有哪些同步选项?我的兄弟告诉我一个简单的解决方案,即实现1:1发送/接收。所以我只在收到图像时发送图像。由于我是网络编程的初

tcp - ipv4 报头校验和

我是TCP/IP套件的初学者。ip报头的一个域HEADERCHECKSUM是将报头看成一个16位整数序列,用补码算法将它们相加,然后对结果取补码。但是ipheader还包含TTL字段,在传输过程中可能会发生变化。为什么它不会导致发送方和接收方之间的不一致? 最佳答案 ThechecksumisrecomputedateveryhopAstheTTLfieldisdecrementedoneachhop,anewchecksummustbecomputedeachtime.Themethodusedtocomputethechecks

sockets - TCP RST 会导致主机丢弃接收缓冲区吗?

在收到一个TCPRST数据包后,主机是否会丢弃接收缓冲区中已被远程主机确认但未被使用套接字的应用进程读取的所有剩余数据?我想知道一旦我对其他主机所说的不再感兴趣(例如,为了节省资源)就关闭套接字是否危险;例如如果那会导致对方丢失任何我已经发送但他尚未阅读的数据。通常应该避免RST并指示完全的双向通信失败,还是如上例所示,RST是一种相对安全的单向强制断开连接的方法? 最佳答案 我找到了一些关于该主题的很好的解释,它们表明在这种情况下很可能会丢失数据:http://blog.olivierlanglois.net/index.php/

java - 使用 LabVIEW 通过 TCP 或 UDP 将数据传输到 cRIO

我应该使用TCP还是UDP作为协议(protocol),通过局域网从我的笔记本电脑(使用LabVIEW程序)向cRIO(使用java)发送可变数据包。更具体地说,LabVIEW部分很简单。但我不熟悉在java中设置套接字和接收数据。 最佳答案 TCP。UDP是一种“原始”数据包协议(protocol),这意味着每个sendto()对应于网络上的单个数据报,没有流量控制或错误恢复。如果您需要发送超过几百个字节,需要确保数据通过,需要数据按顺序到达,或者将以接近网络速率的任何速率发送数据,那么单独的UDP将无法提供你需要什么。有几个可靠

Linux 3.0 TCP 堆栈接收缓冲区内核架构

(Linux3.0,x86_64)如果我在连接的tcp套接字上停止调用recv(2)一段时间,而另一台主机继续发送数据,则可能该数据已被内核接收和缓冲,所以下一个当我调用recv时,它会快速返回所有等待数据。我的问题是这个接收缓冲区有多大,它是如何工作的?我可以使用任何相关的内核或套接字设置来调整其行为吗?tcp栈填满后会做什么? 最佳答案 接收缓冲区可以用setsockopt(SO_RCVBUF)改变.默认大小由tcp_rmem控制系统控制。如果缓冲区已满,堆栈将停止扩展它提供给另一端的接收窗口,迫使另一端停止发送数据,直到缓冲区

c - 非阻塞 TCP 套接字处理 - 如何在写入套接字之前检测阻塞状态?

我目前正在编写一个从一个套接字读取并在另一个套接字上写入的代理应用程序。两者都设置为非阻塞,允许处理多个套接字对。为了控制套接字之间的正确流程,如果目标套接字上的写入可能会阻塞,应用程序不应从源套接字读取。这个想法很好,但是我发现如果不先写入目标套接字就无法检测到它的阻塞状态……这不是我们所需要的。我知道有一个选项可以使用SIOCOUTQ(使用ioctl())并计算剩余缓冲区,但与简单检查目标套接字是否匹配相比,这看起来很难看可以开始写作了。我想我也可以只对这个套接字使用select(),但这对如此繁重的系统调用来说太浪费了。 最佳答案

Android - 通过 TCP/IP 将文件从一个设备同步到多个联系人设备

好的,我正在尝试创建一个应用程序,一旦我对文件进行更改,它就会同步到我选择的联系人的设备。有没有办法:当联系人被选中时获取每个联系人的IP地址并打开一个端口并将文件同步到所有设备? 最佳答案 我猜这是不可能的,因为你无法从联系人中推断出IP地址。此外,您不能将此信息与联系人一起存储,因为通常智能手机是由运营商分配的,具有经常更改的动态IP地址。 关于Android-通过TCP/IP将文件从一个设备同步到多个联系人设备,我们在StackOverflow上找到一个类似的问题:

tcp - 什么时候打开TCP连接?

我想通过监视当浏览器需要某些页面时打开的TCP连接数来定义使用哪个版本的HTTP(以经验方式)。我选择了包含2个图片的页面并运行netstat-s|grep"activeconnections"结果是1613然后我打开了这个页面http://c2.com/doc/pages.html并再次运行此命令:结果是1637。如果我关闭所有可能发送TCP数据包的网络客户端,那怎么可能只有浏览器和bash打开。为什么打开了这么多TCP连接? 最佳答案 正如@jørgensen所说,事件连接打开列表所有自TCP/IP堆栈初始化(实际上是上次启动)

Java维护持久的TCP连接

我正在尝试使用TCP从服务器向客户端发送多个数据。我只想为整个session创建一个TCP连接。我该怎么做呢?我尝试了以下流程的代码,但程序在收到第一个响应后停止。客户端1.createsocketsandstreams2.sendrequestforfirstdata3.waitforresponsefromserver4.sendnextrequest服务器端1.Createserversocketandwaitforincomingconnections2.Parseincomingrequest3.Sendresponse4.Parsenextrequest5.Sendnext