Select Language

AI Technology Community

9.4、簡単なTCPクライアントの作成

「TCPエコーサーバーの構築」のセクションを基に、データのやり取りを実現するために、クライアントが必要です。

このセクションでは、このようなクライアントを作成します。このクライアントは、先に紹介したサーバーと接続し、簡単なデータ列を送信し、サーバーからの返信データを読み取ります。

まず、socketオブジェクトを作成する必要があります。サーバー側と同様に、TCPを使用することを指定します。クライアントとサーバーのトランスポート層プロトコルは一致している必要があり、一方がTCPを使用し、他方がUDPを使用することはできません。

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

次に、connect()関数を使用してサーバーに接続します。この際、サーバーのIPアドレスとポート番号を指定する必要があります。これらの値はサーバー側と一致している必要があります。たとえば、サーバーが50007番ポートを使用している場合、クライアントも同じポートを指定する必要があります。

s.connect((HOST, PORT))

接続が成功すると、データの読み書きが可能になります。クライアントがデータを読むとは、サーバーから送信されたデータを受信することであり、クライアントがデータを書くとは、サーバーにデータを送信することです。データを読む際にも、バッファサイズを指定することができ、方法は次のとおりです。

s.sendall(b_data)
data = s.recv(1024)

使用が完了したら、close()関数を使用してsocketを閉じ、リソースを解放することができます。

s.close()


以下は、完全なコードです。

import socket
HOST = '127.0.0.1' # サーバーアドレス
PORT = 50007 # サーバーポート
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT)) # サーバーに接続
data = 'Hello, world'
b_data = data.encode("utf-8")
s.send(b_data) # データを送信
data = s.recv(1024) # 応答を受信
s.close() # 接続を閉じ、リソースを解放
print('Received: ', data)

サーバー側のコードを起動した後、クライアント側のコードを起動すると、次のように出力されます。

$ python echo-client1.py
Received: b'Hello, world':

クライアントが終了すると、サーバーも自動的に終了します。


post
  • 5

    item of content
初期には、コンピュータ同士は相互に接続されておらず、孤立していました。それらの間のデータ交換は主にフロッピーディスク(現在のUSBフラッシュドライブに相当)を通じて行われていました。その後、人々はネットワークを創造し、コンピュータ間で情報の交換が可能になりました。
初期のコンピュータネットワークも種類が豊富で、サポートされているプロトコルも多岐にわたっていました。時間の経過とともに、現在広く使用されているのはIPネットワークとなり、他のタイプのネットワークは次第に姿を消しました。現在、オフィス内のローカルエリアネットワークでもインターネットでも、基本的にはIPネットワークを使用しています。
この章では、Pythonのネットワークプログラミングに関する知識を読者に紹介します。具体的には、TCP/IPプロトコル、ソケットインターフェース、TCP/UDPクライアントおよびサーバーの構築方法などを含みます。