2012-09-17 19 views
15

Ho creato un semplice server e un semplice client con il modulo socket in python.Qual è il valore di ritorno di Socket.accept() in python

server:

# server.py 
import socket 

s = socket.socket() 
host = socket.gethostname() 
port = 1234 
s.bind((host, port)) 

s.listen(5) 

while True: 
    c, addr = s.accept() 
    print 'Got connection from', addr 
    c.send('Thank you for your connecting') 
    c.close() 

e cliente:

#client.py 
import socket 

s = socket.socket() 

host = socket.socket() 
port = 1234 

s.connect((host, port)) 
print s.recv(1024) 

ho iniziato il server e quindi iniziato 4 clienti e ottenuto output in console del server, come di seguito:

Got connection from ('192.168.0.99', 49170) 
Got connection from ('192.168.0.99', 49171) 
Got connection from ('192.168.0.99', 49172) 
Got connection from ('192.168.0.99', 49173) 

ciò che è la seconda parte nella tupla?

risposta

13

Dal :

Una coppia (host, porta) viene utilizzato per la famiglia di indirizzo AF_INET, dove host è una stringa che rappresenta sia un hostname in notazione dominio Internet come 'daring.cwi.nl' o un indirizzo IPv4 come "100.50.200.5" e la porta è un numero intero.

Quindi il secondo valore è il numero di porta utilizzato dal lato client per la connessione. Quando viene stabilita una connessione TCP/IP, il client seleziona un numero di porta in uscita per comunicare con il server; i pacchetti di ritorno del server devono essere indirizzati a quel numero di porta.

+1

Come posso ottenere solo il valore intero del numero di porta dalla coppia (host, porta) che accetta() restituisce? –

+1

È solo una tupla; usa la sottoscrizione: 'returned_tuple [1]' –

5

Citazione di python documentation:

socket.accept()

accettare una connessione. Il socket deve essere associato a un indirizzo e ad ascoltare le connessioni. Il valore restituito è una coppia (conn, address) in cui conn è un nuovo oggetto socket utilizzabile per inviare e ricevere dati sulla connessione e l'indirizzo è l'indirizzo associato al socket sull'altra estremità della connessione.

Quello che address è disponibile nello stesso documento from words "Socket addresses are represented as follows".

+0

Perché è down down? Questo è esattamente ciò che è stato chiesto, e fortunatamente quello che stavo cercando. –

Problemi correlati