Pythonでsocket
モジュールを使用して単純なサーバーと単純なクライアントを作成しました。
サーバ:
# 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番目の部分は何ですか?
socket
ドキュメント から:
ペア(ホスト、ポート)は、AF_INETアドレスファミリに使用されます。ホストは、「daring.cwi.nl」などのインターネットドメイン表記のホスト名または「100.50.200.5」などのIPv4アドレスを表す文字列で、ポートは整数。
したがって、2番目の値は、クライアント側が接続に使用するポート番号です。 TCP/IP接続が確立されると、クライアントはサーバーと通信するための発信ポート番号を選択します。サーバーの返信パケットは、そのポート番号にアドレス指定されます。
pythonドキュメント からの引用:
socket.accept()
接続を受け入れます。ソケットはアドレスにバインドされ、接続を待機する必要があります。戻り値は
(conn, address)
のペアです。ここで、connは接続でデータを送受信するために使用できる新しいソケットオブジェクトで、addressは接続の反対側のソケットにバインドされたアドレスです。
同じドキュメントでaddress
とは何か 「ソケットアドレスは次のように表される」という言葉から 。