我想使用 Java 实现 TCP 协议。我已经阅读了 Sun 文档和示例,但它们都只是打开一个套接字,客户端等待服务器接受连接然后发送数据。
我想知道如何使用 Java 实现三向握手和数据验证?服务器和客户端如何交换序列号?Java 是否提供任何类/方法(或至少是接口)来实现三向握手?
有人可以给我一些想法,或者链接到一些例子吗?
提前致谢,
对的,这是可能的。您可以使用 JPCap 之类的库访问 Java 中的 IP 层。TCP 实现的其余部分可以由您构建。这当然是一项不平凡的任务。
您无法在 Java 中实现 TCP,因为您无法直接访问 IP 层。Java 允许您在传输层(TCP、UDP)工作,但不能在网络层(IP)工作。
请注意,我指的是带有标准 Java 运行时库的“标准”Java。有一些系统(通常是嵌入式系统)使用 Java 处理一切,直至设备驱动程序级别。我想这不是你想要的,但以防万一,这里有一个链接,指向一个用 Java 编写的用于嵌入式系统的完整 TCP/IP 堆栈:
TCP 已经为您完成了所有的握手和序列号工作。您所要做的就是在客户端创建一个 Socket,在服务器上创建一个 ServerSocket,并接受来自 ServerSocket 的连接。您不必实现 TCP。完成。前一段时间 ;-)
您的问题并不完全清楚(请参阅其他答案,告知您无法在 java 中实现 TCP)。
但是,看起来您想要的是通过 TCP 实现协议。在这种情况下,您到目前为止所看到的信息是一个很好的起点。一旦你理解了通信,你就可以开始实现一个协议。
做这些事情,当您在协议级别遇到问题时,发布您的问题(带有代码)并获得帮助。
Sun JDK 中没有“原始”套接字。您可以访问 TCP 或 UDP 或在 TCP/UDP 之上实现的任何应用程序级协议。仅有的。