2012-09-17 9 views
15

hice un simple servidor y un cliente sencillo con socket módulo en Python.¿Cuál es el valor de retorno de Socket.accept() en Python

servidor:

# 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() 

y el cliente:

#client.py 
import socket 

s = socket.socket() 

host = socket.socket() 
port = 1234 

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

que inicia el servidor y luego comenzaron a 4 clientes y tiene salida en la consola del servidor de la siguiente manera:

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) 

lo que es la segunda parte en la tupla?

Respuesta

13

Desde el :

Un par (host, puerto) se utiliza para la familia de direcciones AF_INET, donde host es una cadena que representa un nombre de host en la notación de dominio de Internet como 'daring.cwi.nl' o una dirección IPv4 como '100.50.200.5', y el puerto es un número entero.

Por lo tanto, el segundo valor es el número de puerto utilizado por el lado del cliente para la conexión. Cuando se establece una conexión TCP/IP, el cliente elige un número de puerto de salida para comunicarse con el servidor; los paquetes de devolución del servidor deben dirigirse a ese número de puerto.

+1

¿Cómo puedo obtener solo el valor entero del número de puerto del par (host, puerto) que accept() devuelve? –

+1

Es sólo una tupla; utilizar suscripción: 'returned_tuple [1]' –

5

Presupuesto de python documentation:

socket.accept()

aceptar una conexión. El socket debe estar vinculado a una dirección y escuchar las conexiones. El valor de retorno es un par (conn, address) donde conn es un nuevo objeto socket utilizable para enviar y recibir datos en la conexión, y la dirección es la dirección con destino a la toma en el otro extremo de la conexión.

Lo que address es lo que puede encontrar en el mismo documento from words "Socket addresses are represented as follows".

+0

¿Por qué es esto ?? downvoted Esto es exactamente lo que se le pidió, y por suerte lo que estaba buscando. –

Cuestiones relacionadas