LinuxやWindowsでプロセス間(exe間)で通信をさせる場合や、ある機器間で通信通信させたい場合に
ソケット通信を用いて通信をすることはありませんか?
私は、よくソケット通信を用いて、データの引き渡しを行います。
実は、Pythonでもこのソケット通信を行うことは可能なんです。
そこで今回は、pythonでソケット通信を行う方法について、記載します。
TCP等のソケット通信じゃなくてRawパケットの制御がしたいという人は↓を確認してみてください。
EtherヘッダやIPヘッダ部分を自分でいじれるので以上パケットを投げたいというなニーズに対応できます。
サンプルコード
では、まずはServer・Clientの簡単なプログラムを書いてみましたので、以下に記載します。
Serverとは、通信のマスターとなる方で、ClientはServerに接続するものです。
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側

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