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