Pythonでのソケット通信(TCP/UDP)方法:サーバーとクライアント間のプロセス間通信

Python
この記事は約3分で読めます。
スポンサーリンク

LinuxやWindowsでプロセス間(exe間)で通信をさせる場合や、ある機器間で通信通信させたい場合に
ソケット通信を用いて通信をすることはありませんか?
私は、よくソケット通信を用いて、データの引き渡しを行います。
実は、Pythonでもこのソケット通信を行うことは可能なんです。
そこで今回は、pythonでソケット通信を行う方法について、記載します。

TCP等のソケット通信じゃなくてRawパケットの制御がしたいという人は↓を確認してみてください。
EtherヘッダやIPヘッダ部分を自分でいじれるので以上パケットを投げたいというなニーズに対応できます。

サンプルコード

では、まずはServer・Clientの簡単なプログラムを書いてみましたので、以下に記載します。
Serverとは、通信のマスターとなる方で、ClientServerに接続するものです。

Server側(Server.py)

import socket

Portnum = 12345

def create_server(ip,port):
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind( (ip,port) )
    server.listen()
    return server

if __name__ == '__main__':
    server = create_server('127.0.0.1',Portnum)
    
    (con, client) = server.accept()
    print("Success connect to client", client)

    x = bytearray([1, 2, 3, 4])
    con.send(x)
    while(True):
        data = con.recv(1024)
        if not data :
            pass
        else:
            con.close()
            print( data.hex() )
            break
    print("Server finish")

Client側(clietn.py)

import socket

Portnum = 12345

def create_client(ip,port):
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.connect( (ip,port) )
    return client

if __name__ == '__main__':

    con = create_client('127.0.0.1',Portnum)
    
    print("Success connect to Server")
    while True:
        data = con.recv(1024)
        if not data :
            pass
        else:
            print( data.hex() )
            x = bytearray([5, 6, 7, 8])
            con.send(x)
            con.close()
            break

    print("Client finish")

実行結果は以下の通りです。

Server側

Client側

続いてはプログラムの解説ですが、解説は次ページにて記載します。

コメント

タイトルとURLをコピーしました