草庐IT

tcp_client

全部标签

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

objective-c - TCP套接字通信问题

我是iOS编程的新手-我需要一些帮助来解决我的问题...我花了很多时间试图找到解决这个问题的方法-但没有成功......我正在编写一个非常简单的应用程序(在iPad上),它将向我的服务器发送一些TCP命令。服务器已经配置好并且工作正常。我可以在我的iPad上使用pTerm连接到它,在通过RAWTCP或telnet成功连接后,我可以将请求发送到我的服务器,如下所示:#100enter它起作用了..但是当我尝试在我的应用程序上执行此操作时-它不起作用,这似乎是发送到服务器的行尾信息的问题(通常通过按enter键来完成)。服务器配置在192.168.1.220,端口2000。点击重置按钮后,

tcp - tcp 窗口大小是否与 tcp 套接字的 SND_BUF 或 RCV_BUF 相关?

我想知道当我通过setsockoptAPI改变socket的SND_BUF时,TCP层原来的窗口大小会不会随之改变? 最佳答案 它不会改变,因为它是接收窗口大小,而SO_SNDBUF控制发送缓冲区的大小。 关于tcp-tcp窗口大小是否与tcp套接字的SND_BUF或RCV_BUF相关?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/9615321/

networking - unix服务器之间TCP端口数据传输的限制

我对网络没有那么深的了解。我有两个unix服务器。我使用TCP连接通过客户端调用服务器。它适用于较小的数据大小。当我尝试请求更大的数据时,API调用突然终止。所以,只想知道unix服务器(clinet-服务器)之间的每个请求的数据传输是否有任何限制。如果是,有什么方法可以增加它。如果有限制,我可以从我的sysad那里寻求帮助来解决这个问题。提前致谢马尼什 最佳答案 没有这样的限制。TCP套接字是一个双向字节流,应用程序如何将这些字节拆分为消息(通常称为“应用程序级协议(protocol)”)取决于应用程序。系统管理员不会在这里为您做