2012-09-17 59 views
15

Tôi đã tạo một máy chủ đơn giản và một máy khách đơn giản với mô-đun socket trong python.Giá trị trả về của Socket.accept() trong 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() 

và khách hàng:

#client.py 
import socket 

s = socket.socket() 

host = socket.socket() 
port = 1234 

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

tôi bắt đầu máy chủ và sau đó bắt đầu 4 khách hàng và nhận được đầu ra trong giao diện điều khiển của máy chủ như sau:

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) 

là gì phần thứ hai trong tuple?

Trả lời

13

Từ :

Một cặp (máy chủ, cổng) được sử dụng cho các gia đình địa chỉ AF_INET, nơi lưu trữ là một chuỗi đại diện hoặc là một hostname trong ký hiệu miền Internet như 'daring.cwi.nl' hoặc địa chỉ IPv4 như '100.50.200.5' và cổng là số nguyên.

Vì vậy giá trị thứ hai là số cổng được phía máy khách sử dụng cho kết nối. Khi kết nối TCP/IP được thiết lập, máy khách sẽ chọn một số cổng đi để giao tiếp với máy chủ; các gói trả về của máy chủ sẽ được gửi đến số cổng đó.

+1

Làm thế nào tôi có thể nhận được chỉ số giá trị số cổng từ cặp (máy chủ, cổng) chấp nhận() trả về? –

+1

Nó chỉ là một tuple; sử dụng đăng ký: 'return_tuple [1]' –

5

Trích từ python documentation:

socket.accept()

Chấp nhận kết nối. Ổ cắm phải được gắn vào một địa chỉ và lắng nghe các kết nối. Giá trị trả về là một cặp (conn, address) trong đó conn là một đối tượng ổ cắm mới có thể sử dụng để gửi và nhận dữ liệu trên kết nối và địa chỉ là địa chỉ được kết nối với ổ cắm ở đầu kia của kết nối.

Điều gì address bạn có thể tìm thấy trong cùng một tài liệu from words "Socket addresses are represented as follows".

+0

Tại sao điều này lại bị giảm giá? Đây là chính xác những gì đã được hỏi, và may mắn là những gì tôi đang tìm kiếm. –

Các vấn đề liên quan