1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

簡単なTCPサーバ/クライアントスクリプトのつくり方

Last updated at Posted at 2020-05-04

はじめに

サーバ間通信の簡単な疎通確認に使えるってことで作成。
参考にした書籍はpython2だったのか微妙にうまくいかなかったので
python3向けに若干修正したものをUPする。

ちなみに実行想定は、

実行環境

・python 3.7.6

実行手順

①同一HOST上にTCPserver.py、TCPclient.pyを作成
②ターミナルよりTCPserver.pyを実行
③別ターミナルを起動してTCPclient.pyを実行

TCPクライアント

TCPclient.py
import socket

target_host="127.0.0.1"
target_port=9999

#create socket object
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# connect to object
client.connect((target_host, target_port))

# data transmission
client.send(b"ABCDEFG")

#recieve data
response = client.recv(4096)
print(response)

TCPサーバ

TCPserver.py

import socket
import threading

bind_ip = "0.0.0.0"
bind_port = 9999

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

server.bind((bind_ip, bind_port))

server.listen(5)

print("[*] Listening on %s:%d" % (bind_ip, bind_port))

def handle_client(client_socket):
    request = client_socket.recv(1024)
    print("[*] Recieved: %s:" % request)
    client_socket.send("ACK!")
    client_socket.close()

while True:
    client,addr = server.accept()

    print("[*] Accepted connection from: %s:%d" % (addr[0],addr[1]))

    client_handler = threading.Thread(target=handle_client, args=(client,))
    cliend_handler.start()

実行結果

左側がTCPserver.py
右側がTCPclient.py
の実行結果。
コメント 2020-05-04 143049.png

おわりに

単につなげるだけだったらこのくらいのコード量でいいのねって感じ。
サーバとクライアントとでポートさえ合えばこんなに簡単なのか、というところも勉強になった。
教科書通りといえばそうなんだけど、コードで動いているものを見ると
これはこれで感動する。

1
5
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
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?