草庐IT

tcp_probe

全部标签

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

c++ - Mat 的 tcp 发送缓冲区错误

我正在尝试通过TCP发送Mat图像。首先将Mat转换为uchar,然后转换为char格式。char格式的整张图像将逐个缓冲区发送出去,缓冲区大小为1024字节。以下是我的代码。MatdecodeImg=imdecode(Mat(bufferFrame),1);uchar*transferImg=decodeImg.data;char*charImg=(char*)transferImg;intlength=strlen(charImg);intoffset=0;while(true){bzero(bufferSend,BUFFER_SIZE);if(offset+BUFFER_SIZE

java - 如何在没有接收到数据的情况下检查是否有来自 TCP 套接字的传入数据?

基本上我需要做的是获得通知,然后使用类DataInputStream和方法read()继续接收数据。问题是DataInputStream没有方法来检查是否有要读取的内容,并且通过使用read()方法进行测试会干扰对read()的进一步调用。我可以通过读取一个字节并向其附加更多数据来进行测试,但我想看看是否有更优雅的解决方案。 最佳答案 DataInputStreamdoesnothaveamethodtocheckifthereissomethingtoread是的。您错过了available()方法,但它并不总是返回非零值,具体取

tcp - 银行 atm tcp 消息负载平衡和路由使用 java nio/netty 和 activemq

我正在设计银行ATM消息处理/路由框架,需要一些帮助来完成技术和架构。交易来自多个合作银行的ATM,比如目前我们为5到6家银行提供服务,每家银行不超过10台ATMS。消息通过tcp套接字来自ATM,并由称为ATMController的多线程Java进程接收。它以阻塞模式运行,每个套接字一个线程。每家银行都有一个唯一的端口,所有ATM都在该端口发送消息。消息被转换为ISO8583格式发送到硬件安全模块(HSM)以通过tcp套接字进行解密,PIN验证也使用另一个软件模块完成。这些是目前运行良好的标准库。消息然后再次通过tcp套接字发送到另一个称为事务路由器的Java程序。交易路由器会将消息

Java TCP Socket等待空闲?

我不确定这是一个Java问题还是TCP问题或两者兼而有之:我有一些使用ApacheMina的服务器代码,它运行一个在给定套接字上监听TCP的服务器。我的处理程序扩展了IoHandlerAdapter。我正在使用它通过HTTP/1.1将相机连接到Java服务器问题是:如果我建立连接然后完全断开相机(拉电源或拉网络),我必须等到调用sessionIdle方法来检测session现在已经死了(然后明确关闭来自服务器端的session)。我的问题是:有没有办法知道客户端立即中断了TCPsession?或者这只是TCPsession/Mina的工作方式?理想情况下,sessionIdle仅适用于