2012-09-17 76 views
15

私は単純なサーバと単純なクライアントをsocketというモジュールを使ってPythonで作った。PythonでSocket.accept()の戻り値は何ですか

サーバー:

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

とクライアント:

#client.py 
import socket 

s = socket.socket() 

host = socket.socket() 
port = 1234 

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

私は、サーバーを開始してから4つのクライアントを開始し、以下のようにサーバのコンソールに出力を得た:

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) 

あるものタプルの2番目の部分? python documentationから

答えて

13

ペア(ホスト、ポート)は、ホストが「daring.cwi.nl」のようなインターネットドメイン表記でホスト名のいずれかを表す文字列であるAF_INETアドレスファミリに使用されまたは '100.50.200.5'のようなIPv4アドレスであり、portは整数です。

したがって、2番目の値は、クライアント側が接続に使用するポート番号です。 TCP/IP接続が確立されると、クライアントはサーバーと通信するために発信ポート番号を選択します。サーバの戻りパケットはそのポート番号宛てになります。

+1

accept()が返す(ホスト、ポート)ペアからポート番号の整数値だけを取得するにはどうすればよいですか? –

+1

これは単なるタプルです。サブスクリプションを使用する: 'returned_tuple [1]' –

5

引用:

socket.accept()

接続を受け入れます。ソケットはアドレスにバインドされ、接続を待機する必要があります。戻り値は、(conn, address)のペアです。connは、接続上でデータを送受信するために使用できる新しいソケットオブジェクトであり、addressは、接続のもう一方の端にあるソケットにバインドされているアドレスです。

from words "Socket addresses are represented as follows"と同じ文書内には何がありますか。 から

+0

なぜこれが下降表示されますか?これはまさに尋ねられたものであり、幸い私が探していたものです。 –

関連する問題