我有一台服务器用于为我的朋友和我运行游戏服务器,而且有些服务器可以攻击" (怪物可以摧毁我们的基地)所以我希望服务器在不使用时关闭。然后我想知道是否有办法检测给定端口上是否有传入信号(尝试连接到服务器),这样服务器可以打开吗?
原始问题: 有没有办法检测,如果有人试图通过c#中的特定端口(或更适合此操作的其他语言)发送消息(或连接)?
答案 0 :(得分:0)
是的,您必须创建一个服务器来侦听该端口。您将面临的问题是,您需要关闭为检测传入连接而创建的服务器,以便可以打开游戏服务器。他们无法在同一个端口上收听,除非他们被编码为一起工作,而且游戏服务器可能不会这样。
答案 1 :(得分:0)
如果您想查看是否有任何正在使用的连接,您可以尝试列出所有当前的TCP连接(假设服务器使用TCP)并查找是否存在与特定端口的任何活动连接。
Resmon在他的“网络”标签中执行此操作,因此必须有一种以编程方式访问它的方法。
以下是描述如何获得活动TCP连接的答案。
How can I get all the the active TCP connections using .NET Framework (no unmanaged PE import!)?
您可能应该以一定的间隔监视服务器,因为播放器可能会丢失并重新建立连接,因此每10秒左右对其进行一次采样,如果没有连接超过几个样本,请关闭服务器。