java 中的 2 路服务器-客户端 UDP
2 way server-client UDP in java
我想在 java 中编写一个程序来处理服务器和客户端之间的双向通信,使用 udp.Most 在线源仅指定一种方式,即从客户端到 server.I 希望服务器也能够向客户端发送消息。
UDP 是 IP 之上的无连接协议。这只是意味着您在另一端没有收到已建立的连接,您只是收到数据包。要回复,您必须向客户端发送一个数据包 "back"。
为此,客户端需要可访问。这可能会或可能不会通过防火墙。通常,如果客户端发起对话,防火墙会得到 "punched through",但不能保证。
另请注意,UDP 数据包可能会乱序到达、重复或根本没有。你必须为所有人做好准备。如果您发送更大(大于 MTU)的数据包,它们可能会因拆分而更有可能无法到达。
如果您不能使用 TCP,您仍然可以使用 UDP 实现相同的行为。
需要考虑三个方面。
首先,您提到过:您想通过两种方式进行交流。您可以通过 运行 客户端和服务器上的发送者和侦听器线程来做到这一点。
其二:UDP包不保证一定能到达。你必须在你的应用层实现一个ACK逻辑。
第三:不保证UDP包按顺序到达。您必须在应用程序层中实现某种排序。
我想在 java 中编写一个程序来处理服务器和客户端之间的双向通信,使用 udp.Most 在线源仅指定一种方式,即从客户端到 server.I 希望服务器也能够向客户端发送消息。
UDP 是 IP 之上的无连接协议。这只是意味着您在另一端没有收到已建立的连接,您只是收到数据包。要回复,您必须向客户端发送一个数据包 "back"。
为此,客户端需要可访问。这可能会或可能不会通过防火墙。通常,如果客户端发起对话,防火墙会得到 "punched through",但不能保证。
另请注意,UDP 数据包可能会乱序到达、重复或根本没有。你必须为所有人做好准备。如果您发送更大(大于 MTU)的数据包,它们可能会因拆分而更有可能无法到达。
如果您不能使用 TCP,您仍然可以使用 UDP 实现相同的行为。
需要考虑三个方面。
首先,您提到过:您想通过两种方式进行交流。您可以通过 运行 客户端和服务器上的发送者和侦听器线程来做到这一点。
其二:UDP包不保证一定能到达。你必须在你的应用层实现一个ACK逻辑。
第三:不保证UDP包按顺序到达。您必须在应用程序层中实现某种排序。