Ich will einen kleinen simplen IRC Bot programmieren und dann mit dem http://nltk.org/ was draus machen.
Also ich habe einen kleinen client geschrieben(mit Hilfe von BlacKJack verbessert thx)
Code: Alles auswählen
import socket
from contextlib import closing
def main():
with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as sock:
print "Socket(Client)"
host = raw_input("Host(z.B. google.de):\n>")
port = int(raw_input("Welcher Port?:\n>"))
input = raw_input("Was soll gesendet werden?:\n>")
sock.connect((host, port))
sock.sendall(input+ "\n")
print "Verbindung aufgebaut zu {0}(IP:{1}), gesendet: {2}".format(
host, socket.gethostbyname(host), input
)
while True:
antwort = sock.recv(4096)
print antwort
if __name__ == "__main__":
main()
Wenn ich nun die IRC Daten eingebe,
z.B. host: irc.freenode.net port: 6667 nachricht: PASS blabla NICK blabla USER bla bla irc.freenode.net 235.25345.33
(eigene ip, ist jetzt nur ein beispiel) :JonnyNonny (also das muss man ja alles eingeben weil irc protokoll), und dann
auf den server connected dann kommt als letztes eben dieses "No ident response".
In der offiziellen IRC Protokoll doc steht leider nicht viel,
nur das es einen ident-server gibt, und das man den eben manchmal braucht.
Jetzt hab ich mich informiert und rausbekommen das der IRC Server mir bei diesem
Prozess eine ID auf dem Port 113 zurückschickt, und ich diese ID dann
rückwärts(mit noch ein paar anderen Sachen) wieder an ihn schicken muss.
Wenn das nicht passiert gibt es eben dieses "no ident respone".
Jetzt frag ich mich wie ich die Nachricht auf dem Port auffangen kann.
Ich hab einen kleinen server dazu programmiert der auf Port 113 ein listening macht.
Also das client Programm gestartet, dann zum IRC-Server connected und währendessen hat dann
der server "gelisteninged", leider kommt nix durch
Ich hab es auch noch mal mit telnet versucht, da geht auch nix durch.
Bei meinem Router hab ich auch den Port 113 "weitergeleitet" und es sollte nun offen sein.
Könnte ich den client nicht so schreiben das es gleichzeit auch "hört" was der server schickt
und dies eben wie gewollt wieder zurück schickt??(also wenn es klappt)
Das ist der code von dem server mit dem ich es mit telnet versucht habe(ist aus einem Tutorial,
einfach um zu sehen ob es überhaupt klappt(was es ja nicht hat). Ich hatte auch etwas eigenes mit
connect/listen usw. in meinen eigenen client ganz oben eingebaut, hat leider noch nicht geklappt)
Code: Alles auswählen
import socket
import sys
HOST = '' # Symbolic name meaning all available interfaces
PORT = 8888 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
try:
s.bind((HOST, PORT))
except socket.error , msg:
print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
sys.exit()
print 'Socket bind complete'
s.listen(10)
print 'Socket now listening'
#now keep talking with the client
while 1:
#wait to accept a connection - blocking call
conn, addr = s.accept()
print 'Connected with ' + addr[0] + ':' + str(addr[1])
data = conn.recv(1024)
reply = 'OK...' + data
if not data:
break
conn.sendall(reply)
print conn.recv(1024)
conn.close()
s.close()
Gruß