2016-07-24 16 views
0

In Ordnung, der folgende Code erlaubt mir, ziemlich gut mit einigen IRC-Servern zu verbinden. Aber ich kann nicht scheinen, mit anderen zu verbinden, könnte wegen der Auth, nicht sicher sein. Speziell einer dieser Server ist irc.d2jsp.orgVerbindung zum IRC-Server mit Python-Socket

Also meine Frage ist, wie verbinde ich mit diesem Server und warum nicht meine Konsole etwas sagen, wenn ich es verbinde?

import socket 
import sys 

server = "irc.d2jsp.org" 
channel = "#channel" 
botnick = "pybot" 
port = 6667 

irc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
print "connecting to: " + server 

irc.connect((server, port)) 
print "connected" 

irc.send("USER " + botnick + " " + botnick + " " + botnick + " : Sup!\n") 
print "sent user" 

irc.send("NICK " + botnick + "\n") 
print "sent nick" 

while 1: 
    text = irc.recv(2040) 
    print text 

    if text.find("PING") != -1: 
     irc.send("PONG " + text.split() [1] + "\r\n") 
+0

Alle Fehlermeldungen ?? Oder einfach nichts – MatejMecka

+0

Keine Fehler zu arbeiten mit keine :( Wenn ich eine Verbindung zu anderen Servern von der Stelle der Verbindung bekomme ich Nachrichten und sie sind in der Konsole gedruckt. Dies ist nicht der Fall, wenn Verbindung zu d2jsp irc. Ich habe versucht, SSL zu verwenden aber ich habe es nicht richtig, es hängt, wenn ich versuche, ssl.wrap_socket – LAZ

Antwort

0

Es ist nicht wegen Ihres Codes. Der Server, der unter irc.d2jsp.org:6667 zuhört, akzeptiert Verbindungen, sendet aber nichts.

Die einzige Reaktion, die ich daraus bekommen kann ist, dass es die Verbindung schließt, nachdem wir einen QUIT Befehl gesendet haben.


PS: Das ist völlig unabhängig von Ihrem Problem, aber auf dieser Linie:

irc.send("USER " + botnick + " " + botnick + " " + botnick + " : Sup!\n") 

Sie den Raum nach dem Doppelpunkt entfernen mögen. Das IRC-Protokoll erwartet kein Leerzeichen zwischen dem Doppelpunkt und dem letzten Argument, so dass der Platz Teil des Realnamens wäre (dh es wird <space>Sup! sein)

+0

Ich fand meine Antwort, und es war über die Syntax meiner Auth-Sequenz und dieses Bit Sie wies darauf hin. Vielen Dank für die Zeit zu helfen me: P – LAZ

+0

Darf ich fragen, was war das Problem mit der Syntax? –

+0

der Raum, wie Sie sagten, und die Tatsache, dass dieser bestimmte Server Auth erfordert und mein Auth-Befehl war falsch. – LAZ