我正在写一个IRC聊天客户端,因为我的ISP不允许正常的IRC程序。所以我正在使用SSL。无论如何,我运行我的IRC聊天客户端,我可以听得很好,我只是不能识别自己。聊天开始后我总是收到这个。
* 没有识别回复
我看过的所有内容都让我在端口113上进行侦听并做出响应,因此我编写了一个TCP套接字来监听和打印发送的内容,并认为我遵循其他建议。但是,我从来没有得到任何响应,我在113上的服务器套接字上运行,我能够连接和通信就好了。
我不认为IRC会在113上发回验证,或者我发送的信息有问题。我怎样才能确定或至少回复回复以表明自己和聊天
这是我的客户:
import socket, string, re, time , ssl, urllib
network = 'irc.freenode.net'
nick = 'testr'
chan = 'ubuntu'
port = 7000 #6697
socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
def main(network, nick, port):
socket.connect((network,port))
irc = ssl.wrap_socket(socket)
irc.send('NICK %s\r\n' % nick)
print irc.recv(4096)
irc.send('USER %s %s %s :TEST\r\n' % (nick,nick,nick))
print irc.recv(4096)
irc.send("JOIN #%s\r\n" % chan)
print irc.recv(4096)
print "STARTING CHAT!!"
while True:
data = irc.recv(4096)
print data
irc.send("TEST")
if data.find('PING') != -1:
print "PING RECEIVED!"
print "SENDING PONG!"
irc.send('PONG '+data.split()[1]+'\r\n')
if __name__=='__main__':
main(network, nick, port)
我的服务器用于测试响应:
#!/usr/bin/python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
host = 'localhost'
port = 113
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
data = c.recv(1024)
print data
#c.close() # Close the connection
答案 0 :(得分:0)
' IDENT'意味着除了你正在思考的东西。它实际上是一种必须满足特定协议的服务。 (但是,大多数IRC服务器并不严格......)
您可能需要设置一个NAT端口,从您的外部地址转发到您的假身份服务器以支持此功能。世界上99%的人将使用外部地址进行设置,您可以远程登录到端口113,除非正确配置防火墙,否则它将无法连接到任何地址。
但是,在大多数情况下,您可以忽略身份 - 无论如何它基本上都是垃圾。远程连接信任您确认使用本地主机端口的用户的身份..至少可以说是不值得信任的。出于这个原因,大多数ircd可能会因为历史原因对其进行检查,但几乎没有任何人会因为有假数据而惩罚你。