LoginSignup
15
12

More than 5 years have passed since last update.

PythonでTCP通信(クライアント編)

Posted at

あらすじ

前回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!!'

できたー

15
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
12