我在进行网络编程时遇到了问题。我使用 TCP 协议在服务器和客户端之间进行通信。我的代码正在运行,但我还无法检测到数据是成功发送还是失败了。我有以下问题:
您可以使用 C#、Java 或 PHP 进行解释。
TCP/IP 如何工作的解释最好作为研究练习,而不是一个特别的 SO 问题。虽然通常的第一站可能是Wikipedia,但这可能不会从概念层面给你一个很好的介绍。在评论中还有一个指向TCP 教程的链接。
但本质上,TCP 顾名思义,是一种传输控制协议,它提供了一种可靠传送字节流的机制。给定字节流,TCP 基本上确保接收方以正确的顺序接收字节。如果流中间的一个字节“丢失”,则 TCP 可以检测到这一点并安排其重新传输。所有这些对接收方都是透明的。TCP 的神奇之处在于,接收方只是从套接字中读取数据,并且数据看起来完整无缺且顺序正确。
当您使用 TCP 套接字时,您无需处理 ACK 和 NACK 以及重传。所有这些对您的应用程序都是透明的。
现在,您可以检测到另一端已离开,但您无法知道另一端是否确实收到了您的消息。这是二将军的问题。
但实际上,如果您对 TCP 的工作方式感兴趣,请阅读W Richard Stevens 的 TCP/IP Illustrated。不是试图说服您,而是要理解它,您确实需要离开并阅读它(在线或在枯树上)。