草庐IT

READ_WRITE

全部标签

c++ - 什么是 boost::asio::write 保证(ACK,校验和)?

我有一个关于boost::asio::ip::tcp::socket和相关写入函数的问题。从阅读Wikipediaarticle在TCP上,据我所知,TCP包含确认消息以及校验和。不幸的是,我在boost::asio引用资料中找不到任何相关信息。据我了解,boost::asio使用TCP的操作系统实现,它应该包含这两个功能。我的问题是函数boost::asio::write或boost::asio::async_write在使用boost::调用时保证什么asio::ip::tcp::socket。那么如果函数返回/调用回调函数没有错误是什么意思呢。我可以想象一些可能性:基本上没有,它

C++:Linux:调用 write() 时 TCP/IP 程序崩溃

我有一个循环,它不断地通过TCP/IP向客户端写入数据。连接打开如下:newsockfd=accept(sockfd,(structsockaddr*)&cli_addr,&clilen);为了将数据写入客户端,以下行在循环中连续执行(sleep时间为0.1秒):n=write(newsockfd,data.c_str(),data.length()+1);//+1toincludeNULLinnullterminatedstringif(n>=0){cout如果连接因任何原因中断,我希望服务器能够读取以接收新连接。因此,如果写入失败,我会再次准备好接受第一个命令的新连接。我的问题如下

networking - 从 "write"系统调用到 I/O 寄存器编程的 tcp 数据的数据路径(旅行)

Linux中的tcp数据路径是否有很好的概述(2.6,如果路径实际不同则不是2.4)?在tcp/ip堆栈处理的不同阶段,数据包在哪里?数据包如何打包到tcp段,然后是ip数据包。它是如何传输到网卡的?(通过一系列I/Oregs写入和DMA?)它是在“写入”系统调用处理程序(具有一些深层调用堆栈)中传输到网卡还是在其他时刻传输? 最佳答案 http://www.linuxfoundation.org/collaborate/workgroups/networking/kernel_flow我想这就是你想要的。它显示了从sendmsg(

java - 套接字异常 : Connection Reset when trying to read from socket in Java?

我的应用程序在Java套接字方面遇到了一些恼人的麻烦,似乎在非常基本的层面上失败了。我的部分应用程序需要通过TCP连接写入文件名。接收端代码如下:ServerSocketserverSocket=newServerSocket(4445);Socketsocket=serverSocket.accept();BufferedReaderreader=newBufferedReader(newInputStreamReader(socket.getInputStream()));Stringfilename=reader.readLine();虽然我的发件人代码如下:Socketsock

c++ - TCP 套接字上的 read() 何时返回

有人可以解释一下,我用来从TCP套接字获取数据的读取函数到底什么时候返回?我使用下面的代码从测量系统中读取数据。该系统以15Hz的频率传送数据。READ_TIMEOUT_MS的值为200此外,READ_BUFFER_SIZE的值为40000。一切正常,但实际情况是,read()每秒返回15次,读取了1349字节。通过阅读以下文档中的陷阱5,我预计缓冲区已完全填满:http://www.ibm.com/developerworks/library/l-sockpit/初始化:sock=socket(AF_INET,SOCK_STREAM,0);if(socket阅读:unsignedch

c# - 为什么 NetworkStream.Read 这么慢?

我知道,这里已经有很多类似的问题,但我没有找到让它更快的解决方案或者为什么它这么慢的原因?我们在C#.NET中有一个应用程序需要通过TCP与响应同一TCP流(全部以字节为单位)的设备进行通信。消息的发送速度非常快(大约20毫秒),但是当我们使用NetworkStream.Read()方法(或类似的Socket.Receive())从TCP套接字读取数据时,大约需要600毫秒。我通过在Read方法之前启动秒表并在Read之后立即停止来获得这个数字。我还使用Wireshark记录流量,在那里我看到通信进行得非常快(使用TCPNoDelay和TCPAckFrequency注册表黑客)但是我看

c# - 在发送消息中收到所有数据之前,TCPStream.Read 会阻塞吗?

我编写了一个多线程的简单服务器,它使用:clientStream.Read(message,0,4096);阻塞直到客户端发送消息。然后代码继续处理该消息。到目前为止我只用它来发送短命令ex."#login[username][login]"但我担心,当我通过线路发送大量表格数据时,代码可能会在数据全部收到之前继续执行。那么.Read会阻塞直到接收到整个发送的消息,还是在任何数据开始接收时解除阻塞? 最佳答案 依靠Sendtofinish来区分消息是一种糟糕的形式。如果不是出于最简单的原因。我可以远程登录到您的服务器并轻松地使它崩溃

c++ - TCP 套接字 : Where does incoming data go after ack(leaves tcp read buffer) but before read()/recv()?

如果我有一个以200KB/秒的速度传输数据的TCP连接,但我每秒只从套接字read()/recv()一次,那么在哪里那些200KB的数据同时存储?据我所知,数据在ack发送给发送方后离开TCP套接字的读取缓冲区,而且它太小了,无法容纳200KB的数据,同时它在哪里等待,直到它可以被我的客户读取()/recv()?谢谢!!以下答案声称数据在被read()/recv()d之前一收到ACK就离开TCP读取缓冲区:https://stackoverflow.com/a/12934115/2378033“接收器的套接字接收缓冲区的大小决定了在没有确认的情况下可以传输多少数据”会不会是我的假设是错

python - 扭曲传输.write

有什么方法可以强制self.transport.write(response)立即写入其连接,以便下一次调用self.transport.write(response)不会缓冲到同一个调用中。我们有一个客户使用我们无法修改的遗留软件,它读取第一个请求然后再次开始读取,我遇到的问题是将两个写入扭曲在一起,这打破了客户我尝试研究延迟的任何想法但我认为这对这种情况没有帮助示例:self.transport.write("|123|")#amountofmessagestofollowalooptogeneratenextmessageself.transport.write("|messag

c++ - OpenSSL SSL_read 失败(错误 :00000005:lib(0):func(0):DH lib)

我正在使用OpenSSL1.1.0f版来加密我的客户端和我无权访问的中继服务器之间的连接。有时,客户端的连接会因客户端的readLine故障而突然终止。错误代码如下:readLine:readStringreturned-1,ErrorMsg-error:00000005:lib(0):func(0):DHlib我确实搜索了这种错误代码的适当原因,每个人(示例this线程)都说在连接建立期间Diffie-Hellmankey交换似乎有问题。但是连接在几分钟内都很好(有时它甚至可能不会发生,并且可能在连接成功后2到3分钟后非常频繁地发生一次)直到它突然终止。这是我的日志中的更多错误SSL