草庐IT

tcp_client

全部标签

c++ - boost asio tcp 异步读/写

我对boostasio如何处理这个有一个理解问题:当我在客户端查看我的请求响应时,我可以使用以下boost示例Example但我不明白如果服务器每隔X毫秒向客户端发送一些状态信息会发生什么。我是否为此打开了一个serperate套接字,或者我的客户端是否可以区分请求、响应和cycleMessage?客户端发送请求并读取为cycleMessage会发生吗?因为他也在因为这个Message等待async_read?classTcpConnectionServer:publicboost::enable_shared_from_this{public:typedefboost::shared

c - c中的TCP套接字

我正在尝试为我的程序编写一个TCP套接字接口(interface),但由于accept()错误(我认为)而使我抓狂。为此,我创建了一些简化的测试代码。首先我做了一些设置intserver_socket=0;server_socket=socket(AF_INET,SOCK_STREAM,0);intaccepted_connection=0;structsockaddr_inserver_address;server_address.sin_port=htons(9001);server_address.sin_family=AF_INET;server_address.sin_add

基于modbus-master-tcp的异步java库的封装工具类

本人在项目工作中遇到了需要低时延、高并发采集Modbus设备数据的场景,为了最大限度的节省资源,于是尝试采用了modbus-master-tcp库,该库基于Netty编写,天然的支持异步和并发。实际效果还不错,所以把自己编写的工具类,分享给大家。一、导入依赖在pom.xml中添加如下依赖并更新com.digitalpetri.modbusmodbus-master-tcp1.2.0二、编写工具类为了封装ip和port,这里我封装了一个ModbusNetworkAddress类importModbusMasterUtil;importjava.util.Objects;/***@authorhu

sockets - tcp read() 在 accept() 之后立即

如果我在客户端同步connect()返回后立即调用send(),那么期望在服务器端accept()之后立即调用read()会返回第一段数据是否合理?即,接收SYN-ACK的客户端通常会稍等片刻,看看是否有任何有效负载要包含在完成3次握手的ACK中?我的协议(protocol)中的第一条消息将包含一个身份验证token( 最佳答案 没有。即使您可以依赖行为良好的客户端,但在网络问题中,依赖像这样可靠地发生的任何事情几乎永远是不安全的。此外,当您使用未加密的数据时,各种中间路由器会认为处理数据是他们的职责。使用UDP,问题实际上更简单,

c++ - 阻塞 TCP 套接字 : “send()” return and error handling

根据这个答案Blockingsockets:when,exactly,does“send()”return?,阻塞套接字上的send()将在用户缓冲区被复制到内核缓冲区后立即返回。在传送失败的情况下(即,客户端未收到字节),调用send()的进程如何收到失败发生的通知? 最佳答案 POSIX/BSD套接字API不为TCP连接错误提供中断驱动的异步接口(interface)。由于TCP是可靠的,因此数据未交付的唯一原因是连接本身出现故障,无法完全交付。您必须通过在(可能是非阻塞的)套接字上执行某种同步操作来检测错误。最异步的机制是使用

sockets - 为什么此 TCP 连接的一个端点发送带有 RST 标志的数据包?

我正在编写一个尝试执行以下操作的应用程序:创建一个监听可用端口的TCP服务器创建一个连接到服务器的TCP套接字让服务器套接字向客户端写入数据让服务器套接字关闭它的连接端让客户端向服务器写一条消息这就是问题所在。当我尝试运行应用程序时,TCP交换是这样的:前三个数据包建立了three-wayhandshake,第四和第五个数据包是服务端写入数据的传输和确认。正如预期的那样,服务器套接字发送了一个设置了FIN标志的数据包,以指示它正在关闭它的连接端。客户端确认这一点,然后尝试将其数据写入套接字。服务器立即发送一个RST数据包,提前终止连接。为什么会这样?注意:以上捕获是在Windows8.

sockets - Libuv - 单个连接上的多个 TCP 请求

使用Libuv,我实现了一个调用另一个TCP服务器B的TCP服务器A。随着服务器A不断收到请求,我使用从A到B建立的单个TCP连接向服务器B发送请求。鉴于Libuv是异步的和面向回调的,我如何区分服务器B的响应?即如何将正确的结果发送回服务器A的客户端?文档说uv_read_cb回调将被调用多次。我如何知道uv_read_cb是针对哪个原始请求调用的? 最佳答案 TCP是基于流的,而不是基于消息的——您发送的不是单独的消息,而是未区分的数据流。所以简而言之,您尝试做的事情总是很棘手,处理完全取决于您。您需要在TCP之上创建自己的协议

c# - 使用 TCP 文件传输客户端发送时出现问题

作为练习/演示的一部分,我必须开发一个简单的TCP文件传输客户端,但我在数据传输方面遇到了问题。我已经提供了TCP文件服务器,它将接收传入的文件,我必须编写一个客户端,该客户端将连接到服务器并将文件发送到服务器。到目前为止,我已经成功地将所选文件的数据转换为可以传输并成功打开连接然后发送数据的格式,但是甚至在接收服务器上遇到问题-我不允许更改服务器的代码,因此应该以服务器可以解释发送的数据的方式更改我的客户端代码。这是我使用的代码(有些被遗漏了,这是简单的开销,比如获取IP地址的输入框等):TCP服务器VS解决方案的链接(如果您愿意):https://www.mediafire.com

python - 如何使用 python 发出正确的 TCP 请求

我正在尝试发出请求,但google.com返回状态400,但它应该是302。我的请求有什么问题?我需要额外的请求header吗?有什么想法吗?当前代码:importsockethost="www.google.com"port=80client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)client.connect((host,port))client.send("GET/HTTP1.1\r\nHost:www.google.com\r\n\r\n")response=client.recv(4096)printresponse回应

vb.net - 如何创建 GUI 中所有按钮都可以使用的 TCP 连接和流?

我正在尝试为TCP连接中的服务器创建GUI。我想要一个创建连接和可能的底层流的按钮,然后有其他按钮通过这个流发送序列化命令。我遇到了问题,因为每个按钮都充当子过程,所以我相信流超出范围并且对每个按钮不可用。我已经尝试在按钮之外创建流,但下面的代码在myServer.Start()处抛出错误,表示未声明myServer。PublicClassForm1DimmyIPAsIPAddress=IPAddress.Parse("myip")DimmyServerAsNewTcpListener(myIP,800)myServer.Start()'ErrorlinePrivateSubButto