草庐IT

tcp_client

全部标签

tcp - Erlang:{packet,N} 选项适用于 N = 0 但不适用于 1,2,4?

下面的代码确实适用于gen_tcp:connect()函数调用中的{packet,0}选项,但不适用于1、2和4(尽管我只测试了4,我假设1和2也不起作用)。我的问题是为什么不使用一个而不是另一个重要吗?基本上,Erlang文档没有详细说明有关数据包选项的主题,JoeArmstrong的ProgrammingErlang也没有提供任何详细信息;他只是解释说数据包没有按顺序重新组装,尽管我一直认为tcp数据包在发送时就被接收到,这与UDP不同。我有一个有趣的注意事项是thispage上的客户端服务器有{packet,4}作为选项,它工作正常并且与下面的代码非常相似。这是下面代码中使用的{

tcp - 如果连接空闲,TCP 滑动/拥塞窗口会缩小吗?

如果是这样,应用程序是否可以做出任何合理的猜测,或者更好的是API调用,以确定空闲多长时间会导致窗口缩小?需要低延迟的应用程序是否会在空闲时定期发送不必要的流量以保持窗口大小?问题的另一种表达方式——Google做了什么(除了避免使用tcp本身并仅使用ip/udp)? 最佳答案 [RFC2581]建议如下:“TCP应该将cwnd设置为不再如果TCP在开始传输之前比RW[初始窗口]没有在超过重传的时间间隔内发送数据暂停。”重传超时可能大约是几个往返时间,因此您需要保持相当高的发送速率以避免这种情况。这是假设您正在使用的实现遵循此建议。

Spring集成TCP,强制重连

我有以下spring集成TCP连接:我希望能够在发生协议(protocol)级问题时强制重新连接。那可以吗?怎么办? 最佳答案 鉴于您有single-use设置为true,每个请求只使用一次套接字,因此“重新连接失败”没有意义,因为无论如何都会为每个请求建立一个新连接。与single-use="false"(共享连接),如果您使用带有的工厂你可以设置client-mode为真;这将在超时后自动重新连接(并且您可以通过在适配器上调用retryConnection()显式地重新建立共享连接。但是,出站网关当前不支持client-mode

c# - 使用 python 通过 TCP 将图像发送到 c# 服务器

我正在开发一个项目,该项目使用python脚本将网络摄像头拍摄的图像发送到使用套接字的c#网络服务器。我目前正在使用如下代码从python客户端向服务器发送字符串:info=bytearray("Texttosend","UTF-8")socket.send(info)将数据发送到c#服务器,它完美地处理文本和数字。我在尝试将从.bmp读取的数据编码为“UTF-8”时遇到问题,因为尝试此操作会返回无法将某些字符编码为UTF-8的错误。我想知道是否有人想出一种方法来对此进行编码,以便c#能够识别,或者,如果有更好的方法来尝试实现此过程,我会洗耳恭听。我想到的几个选项是1-使用类似goog

java - 直接写入socket,获取TCP ZeroWindow

如你所见,我直接每10秒向特定套接字发送一个请求(以保持存活和检测),但它只能发送两次。使用wireshark,发现我发送的第三个包有TCPZeroWindow,无法发送到服务器。以下软件包也是如此。通常,WindowSize应该保持在正常水平,而不是一直减小。源代码有什么问题?任何帮助表示赞赏!我得到了三个包:源码:非常简单publicclasspediy{publicstaticvoidmain(String[]args)throwsIOException{URLurl=newURL("http://bbs.pediy.com");Socketsocket=null;PrintWr

java - 服务器如何获取客户端的IP和端口号TCP?

在UDP中我使用了:InetAddressIPAddress=receivePacket.getAddress();intport=receivePacket.getPort();System.out.println("From:"+IPAddress+":"+port);System.out.println("Message:"+sentence);我对TCP感到困惑。服务器如何使用TCP获取客户端的IP和端口号? 最佳答案 看Socket.getInetAddress()和Socket.getPort().

android - SIP 数据未通过 Android TCP 套接字刷新

套接字通信有问题->SIP服务器和安卓设备。我无法通过大于800字节的TCP发送SIP数据包。如果数据包小于800字节,一切正常。在尝试发送SIP数据包之前建立了成功的TCP握手,但仍然没有。我这样发送数据;Socketsocket=newSocket(ip,port);OutputStreamout=newOutputStream(socket.getOutputStream());out.flush();out.write(msg);send函数没有问题。奇怪的是,对于大于800字节的SIP数据包,一些数据包在从设备发送后几分钟内被传送到服务器。如果我们尝试发送其他数据而不是SIP

sockets - TCP传输持续时间

我有两个应用程序通过TCP套接字进行通信。第一个接收,第二个发送。Firstapp:start=clock();recv();end=clock();当我运行应用程序时,(结束-开始)是150-200毫秒。(总是)第二个应用:while(!stop){start=clock();prepare_message();send();end=clock();}当我运行应用程序时,(结束-开始)是0.00毫秒。(总是)消息负载接近200-300字节,ping持续时间谢谢 最佳答案 发件人在准备就绪时发送消息。接收者必须等待消息,这就是额外时

networking - 使用 TUN/TAP 测试用户空间 TCP/IP 堆栈

是否可以使用TUN/TAP接口(interface)测试TCP堆栈?我正在考虑这样的机制:+--------------------------------+|TCPClient/Server||socket(AF_INET,SOCK_STREAM)||e.g.HTTPServer/Client|+----------+---------------------+||+---------------------+||TUNDevice|||(kerneldoesTCP)||+---------------------+|+------------+-------------------

sockets - TCP端口复制器

我有一个在TCP端口上监听连接并处理接收到的数据的服务。我现在需要拆分这些数据并在“实时”和“测试”机器上进行处理。我想让这成为每台机器的近乎完美的复制,我认为最简单的方法是接收到“复制器”服务,该服务只需将数据复制并重新传输到其他两个端点(使用其中一个能够将数据发送回源)是否有软件可以做到这一点?该平台是WindowsServer。我考虑过自己写这个,听起来并不太难,但如果解决方案已经存在,我更愿意使用它。谢谢 最佳答案 您打算如何解决以下两个问题:如果你真的有TCP协议(protocol),你肯定会在TCP开销上有所不同。因为它