ISP が通常の IRC プログラムを許可していないため、IRC チャット クライアントを作成しています。そのため、SSLを使用して作成しています。とにかく、私は IRC チャット クライアントを実行しましたが、問題なく聞くことができます。チャットの開始後に必ずこれを受け取ります。
* ID 応答なし
私が見たものはすべて、ポート113でリッスンして応答するようになっているので、他の推奨事項に従うと考えて、送信されたものをリッスンして印刷するTCPソケットを作成しました。しかし、何の応答も得られず、113 のサーバー ソケットに telnet で接続したところ、問題なく接続して通信できました。
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