C使用开放服务器在局域网上查找计算机

时间:2018-08-21 20:33:28

标签: c sockets

我试图找出一种方法,一个用户可以在自己选择的端口上打开服务器,而另一个用户可以在同一LAN上打开该服务器,而无需手动输入ip和端口。就像打开Minecraft LAN服务器时一样,即使他们从未输入过ip,并且每次端口都不相同,LAN上的人仍可以看到该服务器。可以使用Berkley套接字API和TCP套接字在Linux上的c语言中执行此操作吗?

1 个答案:

答案 0 :(得分:1)

关于如何使用Unix内置组件扫描局域网中的其他主机的文章很多。

您可以使用ifconfig查找自己的IP地址和网络,就像在this article中一样。

这是一个简单的任务,使用nmap之类的命令来获取LAN上IP /主机名的列表,然后对输出进行排序。

这是一个例子:

sudo nmap -sn 10.84.32.54/24 | grep -Po "(\d{1,3}\.){3}\d{1,3}"

这将为您返回网络上的IP地址列表,例如:

10.84.32.1
10.84.32.11
10.84.32.12
10.84.32.14
10.84.32.17

然后可以通过运行以下命令扫描这些端口上的每个端口:

nmap -p- 10.84.32.1

要获得如下输出:

PORT     STATE SERVICE
22/tcp   open  ssh
2581/tcp open  unknown
2443/tcp open  unknown