python irc客户端没有身份响应

时间:2013-11-02 01:23:36

标签: python sockets client response irc

我正在写一个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

1 个答案:

答案 0 :(得分:0)

' IDENT'意味着除了你正在思考的东西。它实际上是一种必须满足特定协议的服务。 (但是,大多数IRC服务器并不严格......)

您可能需要设置一个NAT端口,从您的外部地址转发到您的假身份服务器以支持此功能。世界上99%的人将使用外部地址进行设置,您可以远程登录到端口113,除非正确配置防火墙,否则它将无法连接到任何地址。

但是,在大多数情况下,您可以忽略身份 - 无论如何它基本上都是垃圾。远程连接信任您确认使用本地主机端口的用户的身份..至少可以说是不值得信任的。出于这个原因,大多数ircd可能会因为历史原因对其进行检查,但几乎没有任何人会因为有假数据而惩罚你。

查看http://en.wikipedia.org/wiki/Ident_protocol了解详情。