2017-05-11 6 views
1

Ich habe mit Python heute gestartet und ich bin in Socket-Programmierung ATM. Ich habe eine Verbindung zu einer IP-Adresse und einem Port mit einer Socket-Instanz hergestellt und versucht, die nächsten 1024 Bytes auf dem Socket mit der recv-Methode zu lesen. Wenn ich versuche, es in einer Variablen zu speichern, bekomme ich einen Fehler, der mir sagt, dass der Socket abläuft, versucht es zu erhöhen, aber nicht geholfen hat.Python Socket Programmierung recv

Code:

>>> import socket 
>>> socket.setdefaulttimeout(2) 
>>> s = socket.socket() 
>>> s.connect(("192.168.95.148",21)) 

Fehler:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
socket.timeout: timed out 
+2

Sie nicht in der Lage sind auf Port 21 verbinden nach dem, was Sie hier zeigen. Sie kommen nie zu dem Teil, wo Sie den Sockel gelesen haben. Stellen Sie sicher, dass auf dem Server etwas ausgeführt wird. –

+0

Ich würde mit der Dokumentation beginnen: https://docs.python.org/3/howto/sockets.html – ptb

Antwort

0

Sie legen ein Timeout in socket.setdefaulttimeout(2), daher ist es eine Ausnahme auslöst.

Versuchen Sie stattdessen:

import socket 
s = socket.socket() 
socket.setdefaulttimeout(10) #set timeout for ten seconds (can be whatever you want) 
try: 
    s.connect(("192.168.95.148",21)) 
except Exception as e: 
    print("An error occured:\n{}".format(e))