如何发现已向TCP套接字发送了多少字节,但尚未将其放在网上?
查看此处的图表:
我想知道类别2,3和4的总数或总共3和4.这是在C(++)以及Windows和Linux上。理想情况下,我可以使用ioctl,但似乎没有。
答案 0 :(得分:3)
在Linux下,请参阅tcp(7)的手册页。
看来你可以通过ioctl获取未传输的字节数(sock,SIOCINQ ......
TCP_INFO getsockopt()调用给出的结构成员可能会提供其他统计信息。
答案 1 :(得分:0)
有些Unix版本可能有API方法可以做到这一点,但没有办法可以在不同版本中移植它。
答案 2 :(得分:0)
如果您想确定是否要添加数据:不用担心,发送将阻塞,直到数据在队列中。如果你不想阻止它,你可以告诉它发送(2):
send(socket, buf, buflen, MSG_DONTWAIT);
但这仅适用于Linux。
您还可以将套接字设置为非阻塞:
fcntl(socket, F_SETFD, O_NONBLOCK);
如果无法将数据写入流中,写入将返回错误(EAGAIN)。