クライアント側、サーバ側の両方は基本的にsocketを設立して以下のシーケンスのように通信を行う。
サーバ側
以下のように実装を書いた。
import socket
import time
host = '127.0.0.1'
port = 65000
buff = 1024
# ソケットを設立する
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind((host, port))
while True:
# クライアントからの接続を待つ
server.listen(1)
print('Waiting for connection')
# クライアントからの接続を受け取る
client, addr = server.accept()
print('Established connection')
while True:
try:
# クライアントへメッセージを送信する
client.send('Hello,World'.encode("utf-8"))
time.sleep(1)
except socket.error:
client.close()
break
クライアント側
以下のように実装を書いた。
import socket
import time
host = '127.0.0.1'
port = 65000
buff = 1024
# ソケットを設立し、サーバへ接続する関数
def make_connection(_host, _port):
while True:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.connect((_host, _port))
print('connected')
return sock
except socket.error as e:
print('failed to connect, try reconnect')
time.sleep(1)
# サーバに接続する
socket = make_connection(host, port)
try:
# サーバからメッセージを受け取る
msg = socket.recv(buff)
print('Client received: %s' % msg)
time.sleep(1)
except socket.error as e:
print('connection lost, try reconnect')
参考