草庐IT

packet_write_wait

全部标签

java - 软件导致连接中止 : socket write error

我有一个案例,客户端在与服务器建立连接后,收到一个文件,当使用相同的连接(持久)时,我最终得到了上面提到的这个错误。下面是实现的代码:Scannerin=newScanner(file);this.clientSocket=newSocket(this.host,this.port);this.os=newDataOutputStream(this.clientSocket.getOutputStream());this.is=this.clientSocket.getInputStream();while(in.hasNextLine()){newFile=in.nextLine()

c# - NetworkStream.Write 在我的一个客户端崩溃时挂起我的服务器应用程序

我有一个客户端服务器.net应用程序,它们通过tcp进行通信。我的服务器定期向我的客户端发送原始字节数据包。它在99.9%的时间都运行良好,但有时,当我的一个客户端崩溃时(一年两次,不会更多),我的服务器会挂起。我调试了它(通过向我的客户端添加一些测试代码使我的应用程序崩溃),并注意到问题出在stream.Write(bytes,0,bytes.Length);中。它简单地什么都不做,没有响应,没有返回,只是挂起。Stream是一个NetworkStream。我之前检查过stream.CanWrite,但它响应为真。那么,如果我的一个客户端崩溃了,我该如何检查服务器端呢?在将数据发送到

c - 对于 TCP,从 "write()"返回是否意味着对端应用程序具有 "read()"数据?

我正在编写一个C/S程序,客户端和服务器都可以在任意时间向对等方发送数据(无需显式确认)。我想知道如果客户端和服务器巧合地同时写入对等点,是否可能会死锁。那么从write()返回是否意味着对等应用程序已经read()了数据?或者它仅意味着对等方的内核已获取数据并将在下一个read()时传递给应用程序?(EJP的回答修正了我对write()/send()/...的完全错误理解。为了添加一些权威信息,我在关于send的POSIX标准中找到了这个:Successfulcompletionofacalltosend()doesnotguaranteedeliveryofthemessage.A

c++ - 在 gen_tcp 中使用 {packet, N} 以及如何在 C++ 程序中接收数据

当通信的两端都基于erlang并且文档清楚地表明使用{packet,N}附加带有消息大小的header并且gen_tcp:recv/2在接收时删除header时,我曾工作过。这非常简单。但是,如果接收程序不是基于erlang的,而是基于c++的,我如何只解析header并知道消息的大小,以便我可以分配该数量的内存。我用到现在,//Receiveamessagefromclientwhile((read_size=recv(sock,client_message,2000,0))>0){//endofstringmarkerclient_message[read_size]='\0';w

c - 带有 TCP 流的 TLS/SSL 中的 ssl_read() 不返回由 BIO_write() 写入的整个缓冲区

以下代码部分的目的是轮询套接字fd集,如果数据(ssl加密)可用,则读取它并通过openssl库解密。底层传输层是TCPStream,所以数据以流的形式出现(不是数据包)。现在,如果从对等方快速连续发送多个数据包(假设2个长度为85字节的数据包),则TCP接收将在同一缓冲区中返回两个数据包,接收字节数为170。因此,我们有一个缓冲区,其中包含2个ssl加密数据包(或n个数据包)。对于ssl解密,我们需要调用BIO_write()将缓冲区写入ssl_bio,然后调用ssl_read()来检索解密的缓冲区。但是,尽管BIO_write()正在向bio中写入170个字节,但ssl_read(

windows - CLOSE_WAIT 状态问题

我在生产服务器上看到许多处于CLOSE_WAIT状态的连接,几乎没有问题。请指教。我知道windows寄存器有以下参数:TcpTimedWaitDelay在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters根据微软资料(http://social.technet.microsoft.com/Forums/en-US/windowsserver2008r2networking/thread/4288d218-fbf9-4489-b869-384a05dea83d/),TIME_WAIT的默认值是4分钟

c - 错误的文件描述符与 Linux 套接字 write() 错误的文件描述符 C

我对write(2)函数有一个有趣的问题。PrepareResponseForSetCoordinates函数导致写入时出现错误的文件描述符错误。这是错误行:perror("写入套接字时出错");总产量:写入套接字时出错:错误的文件描述符我确信我已经建立了连接,因为PrepareResponseForConnectionTest非常有效。你能知道错误的原因吗?当我使用gcc作为编译器时,没有问题。在那之后,由于使用了多个新的cpp源,我使用g++作为编译器,但出现了这个错误。问候下面是我的代码:#defineMAX_PMS_MESSAGE_LEN(4096)unsignedcharba

PHP socket_write 在非阻塞套接字循环中只有最后一次写入成功

我希望通过套接字将数据发送到2个不同的端点。这是为了通过WebSockets和Push-Services发送消息(一个单独的工作实例)。由于我的应用程序不需要端点的响应,我将套接字设置为非阻塞,以便我的应用程序快速完成请求。问题是,只有最后一个socket_write完成了。第一个端点不接收数据。代码如下:foreach($workerInstancesas$workerInstance){//$workerInstancecontainsahostname$sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);socket_set_nonbl

c# - NetworkStream.Write 和 Flush 成功,尽管远程套接字已关闭

我在尝试将数据写入远程TCP服务器时遇到问题,连接被切断,但我无法检测到这种情况何时发生。我目前的假设是WriteAsync正在缓冲数据,但是我还假设FlushAsync应该通过网络强制它(并导致IOException)。我尝试这样做的真正原因是我需要执行一些低级别的HTTP流量,并且我想在发送请求正文之前验证HTTPheader是否已正确发送。我有一个简单的单元测试来说明我面临的问题。publicsealedclassSocketDisconnectTests{[Fact]publicasyncTaskShouldNotWriteIfDisconnected(){varlistene

tcp - Wireshark 中的 "raw packet data"字段是什么意思?

正如您在第一张图中看到的那样,原始数据包数据是什么意思?图2中普通的tcp包有什么区别?仅供引用,我使用的是Wireshark2.2.0。 最佳答案 基本上,当您在接口(interface)上捕获数据包时,您有一个关联的链接类型(以太网、802.11、802.15.4等)。当你没有原始数据包时使用原始数据包,捕获的第一个字节直接是IPv6或IPv4header。RawIP;thepacketbeginswithanIPv4orIPv6header,withthe"version"fieldoftheheaderindicatingw