#あらすじ
前回PythonでTCPサーバ(すごく簡易な)を実現するためのコードを書いた
https://qiita.com/keiusukematsuda/items/aacded313fdb6c08f410
今回はその続きとしてTCPクライアントを実現するためのコードを書く
最後にはサーバ<->クライアント間で通信させて遊んでみる
コードを書く
# -*- coding : UTF-8 -*-
# 0.ライブラリのインポートと変数定義
import socket
target_ip = "127.0.0.1"
target_port = 8080
buffer_size = 4096
# 1.ソケットオブジェクトの作成
tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.サーバに接続
tcp_client.connect((target_ip,target_port))
# 3.サーバにデータを送信
tcp_client.send(b"Data by TCP Client!!")
# 4.サーバからのレスポンスを受信
response = tcp_client.recv(buffer_size)
print("[*]Received a response : {}".format(response))
ガチのマジでシンプル
コードの解説
####0.ライブラリのインポートと変数定義
サーバ同様にsocketライブライをインポート
####1.ソケットオブジェクトの作成
サーバとまったく同じ
####2.サーバに接続
connect関数でリモートソケット(サーバ側ソケット)と接続する
こちらもサーバのbind関数と同様に引数はタプルを渡すため、()が2重になることを忘れないように
####3.サーバにデータを送信
send関数で接続済みのサーバ側ソケットにバイナリメッセージを送信する
####4.サーバからのレスポンスを受信
サーバからデータの返信があった場合は、recv関数にてデータを受信し標準出力に出力する
今回は4096byteを一回に受け取れるデータ量の最大値にしている
#レッツ動作確認
サーバ -> クライアントの順番にスクリプトを実行する
実行した結果は以下の通り
####サーバ
# python tcp-server.py
[*] Connected!! [ Source : ('127.0.0.1', 37870)]
[*] Received Data : b'Data by TCP Client!!'
####クライアント
# python tcp-client.py
[*]Received a response : b'ACK!!'
できたー