Seite 1 von 1

Socket hängt sich auf...

Verfasst: Mittwoch 10. August 2016, 16:41
von DMD-OL
hey
hab grad versucht, einen socket mit server und client (beide vertreten durch meinen rechner) nach einem tutorial zu schreiben.

Code: Alles auswählen

import socket
import sys
from thread import *


host = ''
port = 5555

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

try:
    s.bind((host,port))
except socket.error as e:
    print (str(e))

s.listen(5)
print ('Waiting for a connetion...')


def threaded_client(conn):

    conn.send(str.encode('Welcome, type your info\n'))

    while True:
        data = conn.recv(2048)
        reply = 'Server output: '+data.decode('utf-8')
        if not data:
            break
        conn.sendall(str.encode(reply))

    conn.close()

while True:
    conn,addr = s.accept()
    print ('connected to: '+addr[0]+':'+str(addr[1]))
    start_new_thread(threaded_client,(conn,))
anders als im tutorial, hängt sich mein rechner aber jedesmal auf. ich bekomme keinerlei
fehlermeldung, sondern nach ein paar sekunden sagt das programm: ....(Keine Rückmeldung).
an der firewall liegt es nicht, die war komplett aus :(
(komisch is, dass im tutorial _thread import *. was für ein modul muss man da installieren: threadpool-1.3.2-py2-none-any.whl? )

Re: Socket hängt sich auf...

Verfasst: Mittwoch 10. August 2016, 16:51
von DasIch
Was auch immer du da für ein Tutorial gefunden hast, es ist völlig unbrauchbar. Das Script hängt nicht es wartet auf IO der nie passiert.

Re: Socket hängt sich auf...

Verfasst: Mittwoch 10. August 2016, 16:58
von BlackJack
@DMD-OL: Für `_thread` müsste man Python 3 verwenden *aaaber* egal ob nun `thread` oder `_thread` sollte man dieses Modul gar nicht verwenden, denn das ist schon seit einer Eeeewigkeit vom `threading`-Modul abgelöst worden. In dem Quelltext sind aber noch ein Haufen anderer schräger Sachen drin, so dass ich auch von dem Tutorial grundsätzlich abraten würde, dass solche Sachen propagiert.

Re: Socket hängt sich auf...

Verfasst: Donnerstag 11. August 2016, 11:59
von DMD-OL
also gut:

Code: Alles auswählen

import socket

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(("127.0.0.1",8000))
sock.listen(2)
(client,(ip,port)) = sock.accept()
Mit der Eingabeaufforderung ausgefuehrt, sucht/wartet er hier brav.
Mit PyScripter ausgefuehrt, wird nach ein paar Sekunden "Keine Rueckmeldung" angezeigt.
???
Ohne dass sich ein Client anmeldet, sollte er doch trotzdem warten, oder?
Wenn ich den oberen code mit linux ausführe, kann ich mich mit

Code: Alles auswählen

nc 127.0.0.1 8000
als client anmelden. funktioniert, nur unter windows mit pyscripter nicht.
PS: ich bin im öffentlichen Uni-Netzwerk.

Re: Socket hängt sich auf...

Verfasst: Donnerstag 11. August 2016, 12:12
von BlackJack
@DMD-OL: Dann führe es halt nicht mit PyScripter aus. :-)