25

socketPythonでモジュールを使用して単純なサーバーと単純なクライアントを作成しました。

サーバ:

# 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番目の部分は何ですか?

4

2 に答える 2

22

socketドキュメントから:

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

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

于 2012-09-17T07:21:17.800 に答える
16

Pythonドキュメントからの引用:

socket.accept()

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

「ソケットアドレスは次のように表されます」という言葉から同じドキュメントで何addressを見つけることができますか。

于 2012-09-17T07:21:08.080 に答える