C 使用 Open Server 在 LAN 上查找计算机

标签 c sockets

我试图找出一种方法,让一个用户在他们选择的端口上打开服务器,并让同一 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/

相关文章:

c - 这个错误是关于什么的?结构体、指针、动态内存分配,C

Python Socket 接收大量数据

java - 如果 jvm gc 一个未关闭的套接字实例,底层的 tcp 连接会发生什么?

c++ - 将数组的次对角线上的元素相乘。宝兰C

C 交换二维数组中的字符串(不带指针)

arrays - 数组可以有尾部填充吗?

c - 对类型结构的重复执行操作

php - 检测React PHP客户端是否无法连接到服务器

java - 基本TCP通讯端口相关查询

c++ - 在线程中调用 boost::asio::read() 会阻塞调用线程或进程吗?