Forum >> Programmazione Python >> Web e Reti >> errore sconosciuto

Pagina: 1

salve a tutti ho windows8 e python v2.7 questa e la prima volta che programmo con i sockets e sono un po confuso su alcune cose vorrei che mi chiariste i dubbi che ho commentato.


host = "127.0.0.1"
port = 5000

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print "Socket Created"
#non ho capito perche ci vogliono due parentesi
sock.bind((host, port))
print "socket bind complete"
sock.listen(1)
print "socket now listening"

while 1:
    #qui non ho capito perche ci sono due variable separate per virgola
    #wait to accept a connection - blocking call
    conn, addr = sock.accept()
    print 'Connected with ' + addr0 + ':' + str(addr1)
    #non ho capito nemmeno perche racchiude in un array le variabli
    

sock.close()


Traceback (most recent call last):
File "C:\Documents and Settings\antony\Desktop\testServerTcp.py", line 8, in <module>
sock.bind((host, port))
File "C:\Python27\lib\socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
error: [Errno 10048] Di norma è consentito un solo utilizzo di ogni indirizzo di socket (protocollo/indirizzo di rete/porta)

Ciao supremo97

salve a tutti ho windows8 e python v2.7 questa e la prima volta che programmo con i sockets e sono un po confuso su alcune cose vorrei che mi chiariste i dubbi che ho commentato.

#non ho capito perche ci vogliono due parentesi
sock.bind((host, port))

Perché bind richiede un singolo argomento address, che nel caso di socket internet, è rappresentato dalla coppia (host, port).

    #qui non ho capito perche ci sono due variable separate per virgola
    #wait to accept a connection - blocking call
    conn, addr = sock.accept()

Perché accept restituisce una coppia (conn, address) in cui il primo elemento rappresenta il socket connesso, mentre il secondo è l'indirizzo del destinatario (che nel caso di internet, è la solita coppia (host, port)).

    #non ho capito nemmeno perche racchiude in un array le variabli
    print 'Connected with ' + addr0 + ':' + str(addr1)
Non racchiude in un array le variabili. Sta "spacchettando" la noiosa coppia nelle due componenti host (addr[ 0 ]) e port (addr[ 1 ]).

Traceback (most recent call last):
File "C:\Documents and Settings\antony\Desktop\testServerTcp.py", line 8, in <module>
sock.bind((host, port))
File "C:\Python27\lib\socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
error: [Errno 10048] Di norma è consentito un solo utilizzo di ogni indirizzo di socket (protocollo/indirizzo di rete/porta)

L'errore mi sembra piuttosto parlante (addirittura in italiano! :-)): la porta 5000 è già in uso sul tuo sistema (possibilmente per un'altra istanza del tuo programma in esecuzione).

Happy hacking,

THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝


Pagina: 1



Esegui il login per scrivere una risposta.