LoginSignup
3
3

More than 5 years have passed since last update.

Pythonで簡易Socket通信

Posted at

1.環境

クライアント・サーバ:CentOS7

2.ソースコード

サーバー側

# -*- coding: utf-8 -*-
import socket

def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #指定したホスト(IP)とポートをソケットに設定する
    s.bind(("localhost", 50007)) 
    #1つの接続要求を待つ
    s.listen(1)
    #要求が来るまでブロック
    soc, addr = s.accept()
    #サーバ側の合図
    print("Connected by" + str(addr))
    hoge = "hello hoge"
    q = "q"

    while(1):
        #入力待機(サーバー側)
        data = input("server>")
        #ソケットにデータ送信
        soc.send(data)
        #データを受信(1024byteまで)
        data = soc.recv(1024)
        #サーバー側の書き込み表示
        print("client>", data)
        #qが押されたら終了
        if data == "q":
            soc.close()
            break

    main()

次にクライアント側のコードを書いていきます。

クライアント側

# -*- coding: utf-8 -*-

import socket

def main():
    soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    soc.connect(("localhost", 50007))
    hoge = "hello hoge"
    q = "q"

    while(1):
        data = soc.recv(1024)
        #サーバ側の書き込みを表示
        print("sever>", data)
        data = input("Client>")
        #ソケットに入力したデータ
        soc.send(data)

        if data == "q":
            soc.close()
            break

    main()

3.実行

ターミナルを2つ開き、サーバー側とクライアント側とを分けます。
先にサーバー側のスクリプトを実行し、その後にクライアント側のスクリプトを実行します。
入力待ち状態になったら、hogeとお互いに入力し、qと入力すればプログラムが終了する。

4.メモ

今回は簡易的なソケットしか書けなかったので、これからもっと高度なコードをかけるようになりたい!
Pythonはソースコードがシンプルなので書きやすいし、読みやすい。

3
3
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
3
3