我正在使用套接字编程在C中编写应用程序。我希望将数据从服务器节点发送到客户端节点。我使用套接字描述符上的读写命令分别通过网络获取和发送数据。因为使用的底层协议是TCP/IP,我最终收到了正确的数据。是否有可能在客户端检查是否正确接收数据,实际丢失了多少数据包并重新传输?我正在Linux(debian)环境中编写这个应用程序。检查正确接收的数据包的数量 - 套接字编程
任何帮助,高度赞赏!
-Rahulkumar
我正在使用套接字编程在C中编写应用程序。我希望将数据从服务器节点发送到客户端节点。我使用套接字描述符上的读写命令分别通过网络获取和发送数据。因为使用的底层协议是TCP/IP,我最终收到了正确的数据。是否有可能在客户端检查是否正确接收数据,实际丢失了多少数据包并重新传输?我正在Linux(debian)环境中编写这个应用程序。检查正确接收的数据包的数量 - 套接字编程
任何帮助,高度赞赏!
-Rahulkumar
/proc/net/tcp
有一个字段,您只需find your socket在此列表中。
另一种方法是使用TCP_INFO
sockopt。 struct tcp_info
的当前布局可在linux/tcp.h中找到。您要使用的字段可能是tcpi_retrans
。
+1对于TCP_INFO - 我希望我可以给更多upvotes – 2013-03-02 21:08:10
哇,这真的很酷的东西..谢谢你nemo和Karoly Horvath。我需要弄清楚使用它的方式。将成功完成后更新你们。谢谢! – 2013-03-02 21:15:16
不要忘记upvoting /接受答案,如果它为你工作,所以它不是悬而未决,因为没有回答:) – nemo 2013-03-02 21:16:30
如果要确认数据是否正确,则还要发送校验和(例如SHA1)。当然,没有任何系统是100%万无一失的...... – 2013-03-02 20:25:37
“有多少数据包实际上丢失和重新传输” - posix套接字接口没有办法......我想这可以通过tcpdump/wireshark实现。 – 2013-03-02 20:30:43
恩,谢谢Oli Charlesworth和Karoly Horvath。我认为可能有某种方式,因为wireshark工具在它的实现中必须使用一些API来检查重新传输的数据包的数量。我将检查tcpdump的细节。再次感谢。 – 2013-03-02 20:45:51