繁体   English   中英

在同一台计算机上运行客户端和服务器

[英]Running client and server on same machine

我有一个客户端和服务器应用程序都使用UDP端口25565。为了在同一台计算机上运行这些应用程序,因为只有一个应用程序可以将自身绑定到端口25565,这是否意味着我有必要使用两个单独的端口进行传输应用之间的数据?

我想到的是以下内容-

客户端-> 25565->服务器

客户端<-25566 <-服务器

这是唯一的解决方案,还是有另一种处理方式?

  • 您的服务器应用程序打开一个端口,等待客户端连接。
  • 客户端需要事先知道此端口,以便它可以建立与所需服务的连接。
  • 客户端可以使用任何可用的端口来发起此连接(最好使用> 1000的端口)。
  • 服务器在客户端正在使用的入站数据包中看到该端口,因此它将向其发送anwser。 无需在设计中指定它。
  • 握手后,TCP / IP连接将由以下4个值标识:服务器IP,服务器端口,客户端IP,客户端端口。
  • 没有其他连接可以具有相同的四个值。

回答您的问题。 TCP / IP连接是双向的,一旦建立,服务器就可以向客户端发送数据,反之亦然。

我会这样画方案:

SERVER端口25565 <-> CLIENT端口25566(或任何其他端口)

好吧,不。 仅服务器需要侦听端口25565-客户端将仅连接到该端口。 没有理由指定端口应“使用”哪个客户端来连接到该端口。 同样,一旦服务器接受了连接,端口就可以侦听其他请求。

单独的UDP端口的全部目的是消除侦听传入数据包的应用程序之间的冲突。 更改这些端口之一可能是最好的解决方案。

但是,如果您确实希望两个程序都在同一端口上侦听,则需要使用虚拟网络接口,例如TUN / TAP(有Windows port )。 然后,两个应用程序将使用相同的编号绑定到端口,但在不同的网络接口上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM