Transport endpoint is not connected

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

mein skript macht mir probleme:

Code: Alles auswählen

    def run(self, **options):
	self._optionhandler(options)
	port = 21000
	addr = ('localhost', port )
	self.TCPSockrcv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#this socket is only for login!
	self.TCPSockrcv.settimeout(server['refresh'])
	self.TCPSockrcv.bind(addr)
	self.TCPSockrcv.recvfrom(1024)
er gibt folgendes wieder, wenn der erste veruch kommt,
etwas vom port zu lesen.
Ich habe mir das angekuckt und kann nichts sehen, dass nicht so wie in http://www.evolt.org/article/Socket_Pro ... /17/60276/ ist
socket.error: (107, 'Transport endpoint is not connected')
was muss ich machen?
http://www.cs.unm.edu/~dlchao/flake/doom/
BlackJack

Du musst genauer hinschauen würde ich sagen. Und lernen was der Unterschied zwischen verbindungsloser Kommunikation (UDP) und verbindungsorientierter Kommunikation (TCP) ist.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

ich benutze tcp, oder nicht!? ich habe im modul nachgesehen, und meine verbindung soll über tcp und nicht, wie im beispiel, über udp.
aber ich werde mir mein skript daraufhin noch einmal nachkucken, hab grad leider keine zeit
http://www.cs.unm.edu/~dlchao/flake/doom/
BlackJack

Ja genau, Du benutzt TCP. Darum funktioniert der Quelltext aus dem Beispiel bei Dir nicht, der verwendet nämlich UDP. Bei UDP werden einfach Datenpakete verschickt. Bei TCP muss eine dauerhafte Verbindung aufgebaut werden. Und das tust Du nicht, darum die Ausnahme.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

ich habe gar nicht vor, eine verbindung aufzubauen.
An der stelle soll einfach nur auf dem gegebenen port gelauscht werden,
ob irgendwer eine verbindung auf diesen port aufbaut und dann eine nachricht sendet.
diese nachricht will ich haben, egal von wem sie kommt.
derjenige soll auch die feste verbindung aufbauen, der server kann das ja nicht, da er nicht mal weiß, wer sein gesprächspartner ist.
http://www.cs.unm.edu/~dlchao/flake/doom/
BlackJack

So funktionieren TCP Sockets nicht. Du lauschst auf einem Port mit einem "Serversocket" aber die Daten gehen dann über einen anderen Port. Auf dem Port, auf dem du lauschst, wartest Du mit `accept()` auf eine Verbindung und diese Methode gibt dann das `socket` Objekt zurück mit dem die Kommunikation abgewickelt wird.
Antworten