我试图找出一种方法,让一个用户在他们选择的端口上打开服务器,并让同一 LAN 上的用户能够看到该服务器,而无需手动输入 ip 和端口。想象一下,当你打开一个 minecraft 局域网服务器时,局域网上的人可以看到服务器,即使他们从来没有输入 ip,而且每次端口都不一样。有没有办法在 Linux 上使用伯克利套接字 API 和 TCP 套接字在 c 中执行此操作?
最佳答案
有很多文章介绍如何使用 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
关于C 使用 Open Server 在 LAN 上查找计算机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51956322/