目次

ソケット通信



ソケット通信とは


Pythonでソケット通信

Server

server.py

import socket

bind_host="0.0.0.0"
bind_port=50000

#AF_INETで、IPv4,   SOCK_STREAMで、TCP プロトコルを利用
server=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((bind_host, bind_port))
server.listen(5)
print("host: "+bind_host)
print("port: "+str(bind_port))

while True:
    client, addr=server.accept()
    print("from:"+ addr[0]+" "+str(addr[1]))
    while True:
        print("waiting for client response...")
        rec=client.recv(1024)
        print(">"+rec.decode('utf-8'))

        res=input()  #python3
        #res=raw_input()  #python2

        client.send(res.encode('utf-8'))
        if len(rec)==0:
            client.close()
            break

Client

client.py

import socket

target_host="127.0.0.1"
target_port=50000

client=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((target_host, target_port))

while True:
    str=input()   #python3
    #str=raw_input()   #python2

    client.send(str.encode('utf-8'))
    print("waiting for server response...")
    response=client.recv(4096)
    print(">"+response.decode('utf-8'))

実行

server# python server.py
host: 0.0.0.0
port: 50000
client# python client.py
server# python server.py
host: 0.0.0.0
port: 50000
from:127.0.0.1 40349         <- client.pyを実行したタイミングで、表示される
waiting for client response...
client# python client.py
test                          <-- testと入力
waiting for server response...   <-- test Enterしたら、表示される
server# python server.py
host: 0.0.0.0
port: 50000
from:127.0.0.1 40349
waiting for client response...
>test                         <- client.pyで、testと入力したタイミングで、表示される
ok                            <- 入力する
waiting for client response...   <- ok Enterしたら表示される
client# python client.py
test                          <-- testと入力
waiting for server response...   <-- 表示される
>ok