首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在同一台计算机上运行客户端和服务器

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

Stack Overflow用户
提问于 2012-03-05 06:27:12
回答 3查看 8.3K关注 0票数 2

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

我的想法是:

Client -> 25565 ->服务器

客户端<- 25566 <-服务器

这是唯一的解决方案,还是有其他方法来处理这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-05 06:46:12

你的服务器应用程序打开一个端口并等待客户端connect.

  • Client需要提前知道这个端口,这样它才能建立到所需的连接service.

  • Client可以使用任何可用的端口来发起这个连接(最好使用端口>1000)。

  • 服务器在传入的数据包中看到客户端正在使用的端口,所以它会向它发送一个消息。无需在设计中指定。

  • 握手后,TCP/IP连接由以下4个值标识:服务器IP、服务器端口、客户端IP和客户端端口。

  • 其他连接不能具有相同的4个值。

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

我会画出这样的方案:

服务器端口25565 <->客户端端口25566 (或任何其他端口)

票数 8
EN

Stack Overflow用户

发布于 2012-03-05 06:29:27

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

票数 2
EN

Stack Overflow用户

发布于 2012-03-05 07:34:20

单独的UDP端口的全部意义在于消除侦听传入数据包的应用程序之间的冲突。更改其中一个端口可能是最好的解决方案。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9559433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档