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はソースコードがシンプルなので書きやすいし、読みやすい。