我目前正在为学习目的在 C 中构建一个 IRC 机器人,用于学习目的。我在处理服务器发送给我的机器人的 ident 消息时遇到了一些麻烦。我知道我必须在端口 113 上侦听 ident 消息并发回 ident 响应。问题是我无法将创建的套接字绑定到端口 113 以侦听该消息。
我有什么方法可以绑定到端口 113 或解决此问题的其他方法吗?另外,我如何响应服务器发送的 ident 消息?
绑定到低于 1024 的端口需要 Linux 上的 root 访问权限和 Windows 上的管理员权限。尝试以管理员用户身份运行,看看是否有帮助。如果仍然无法绑定,请检查 113 上没有其他服务正在运行:
# Windows
netstat -a | find "listening"
# Linux
netstat -lnptu
同样,您可能需要以 root/admin 身份运行以查看正在使用的端口。
您可以在 RFC 上找到有关 Ident 的更多信息,https://www.rfc-editor.org/rfc/rfc1413这实际上非常简洁。
此外,您可能不一定需要运行 Ident 服务来连接(尽管它是首选!),具体取决于网络。这将取决于您连接到的服务器,但请尝试等待服务器尝试的 Ident 查询失败并查看它的行为方式。
响应 ident 不是您的机器人所拥有的特权或责任。ident 协议的重点是让机器识别网络客户端正在运行的用户,以及客户端连接到的删除服务器;这是为了在发现客户滥用行为时确定责任方,以便可以追究滥用行为的用户而不是外壳盒的管理员的责任。