首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个程序听一个套接字

两个程序听一个套接字
EN

Stack Overflow用户
提问于 2013-02-15 21:55:08
回答 1查看 231关注 0票数 0

问题

我的一些朋友玩一个游戏,最多涉及4名玩家。我正在尝试写一个程序,它将允许第五个人监控游戏中正在发生的事情,而不是在游戏中。

背景

游戏的多人部分功能如下:

一个玩家被指定为“主人”。所有其他玩家通过输入主机的ip地址连接到主机。主机负责控制游戏的AI。当游戏中发生事件时,游戏的主机副本将事件发送给其他每个玩家的游戏(客户端)。如果客户端玩家执行某个操作,则他们的游戏将该动作发送给主机,而主机又将其发送给其他玩家,以便任何玩家的动作对所有其他玩家都是可见的。主机和客户端都使用游戏的配置文件(例如:端口58282)中预定义的一个TCP端口。这个游戏是一个实时策略游戏(不是基于转弯的)。

约束

  1. 游戏的机制是不可改变的。它是预编译的,没有办法改变多人机制。2.游戏使用TCP在服务器和客户端之间进行通信。

问题

是否有一种方法可以让一个单独的程序在主机或客户端计算机上运行,侦听游戏的端口(游戏正在进行)?我知道TCP只允许每个ip地址每个端口一个套接字,所以让游戏和单独的程序同时监听同一个端口是有问题的。假设我在游戏前启动外部应用程序,并让应用程序监听游戏的端口,有什么方法可以让应用程序通过游戏端口听到主机的声音,获取/复制该信息,然后将其转发到游戏中?(有点像当地的中间人)

终极问题

考虑到这些限制,这有可能吗?我要用最好的方式去做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-15 21:59:11

我先回答第二个问题。你走错方向了。正确的方法是在服务器中实现一些功能,允许一个单独的“客户端”连接到另一个端口上,定期收集统计信息。

有什么方法可以让应用程序听到主机通过游戏端口,获取/复制信息,然后转发到游戏吗?

你不需要做mitm。您可以使用像tcpdumpwireshark这样无处不在的方法来实现简单的数据包捕获。例如,要捕获TCP端口上的所有内容:

代码语言:javascript
复制
tcpdump -n -w capture.pcap tcp port 58282

其他应用程序永远不会知道您捕获了数据。

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

https://stackoverflow.com/questions/14903973

复制
相关文章

相似问题

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