有没有人用 IRC 协议,IRC 协议中发送什么样的数据包可以发送给频道中的所有人消息,socket 编程该如何接收频道中的消息呢?
1
est 2020-05-29 17:05:58 +08:00
这个跟数据包无关吧。irc daemon 选择如何传递消息。
|
2
ysc3839 2020-05-30 04:22:21 +08:00 via Android
怀疑这是个 X-Y Problem,建议你说一下最终的目的。
你只是想自行研究学习 IRC 协议吗?还是说要实现别的功能?如果是后者建议使用现成的 IRC 库。 |
3
SystemLight OP @ysc3839 实际上我现在可以发送信息到 IRC 服务器, 我选择的服务器是 irc.gitter.im/6697, 频道是#systemlight-madtornado/community,irc.gitter.im 提供了 web 端访问 : https://gitter.im/systemlight-madtornado/community
我现在可以将消息发送到这个频道中,代码实现,协议参考地址 https://tools.ietf.org/html/rfc1459: import socket import ssl ircbot = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ircbot = ssl.wrap_socket(ircbot) ircbot.connect(("irc.gitter.im", 6697)) ircbot.send("PASS 1f3f4e0fd544731b4fedc7ce096a2a6a7447aef3\n".encode()) print(ircbot.recv(2040)) ircbot.send("USER test test test :test\n".encode()) ircbot.send("NICK test\n".encode()) ircbot.send("JOIN #systemlight-madtornado/community\r\n".encode()) # ircbot.send('PRIVMSG #systemlight-madtornado/community :hello me\r\n'.encode()) while True: data = ircbot.recv(4096) if data.find(b'PING') != -1: ircbot.send(b'PONG ' + data.split()[1] + b'\r\n') if data: print(data) 问题:如何可以接收到别人发送来的信息,我尝试使用一个工具 hexchat 往频道中发送消息,web 端可以获取到该消息,但是我的程序没有收到任何的来自 IRC 服务器的反馈,但是我可以收到它发送给我的一些心跳包 ping-pong |
4
ysc3839 2020-06-01 11:47:51 +08:00 via Android
@SystemLight 你好像没有明确表示是不是要研究学习 IRC 协议,如果是的话我只能说我没研究过,我都是使用现成的库的。
|