パソコン同士が通信する際に避けて通れない技術が「プロトコル」
例えば、2人の人が会話をするときに、言語が決まっていなければ意思疎通は難しい。
これはパソコン同士でも言えることで、世の中にはパソコンのメーカーが数多くあります。
基本的な仕組みは同じですが、通信になると、同じ通信の規格でやり取りをしないと、データ自体が送信されません。
そこで、相互に通信(会話)するために決められた約束事や手順がプロトコルという技術というわけです。
でもプロトコルといわれても、ぶっちゃけ根本的な流れをコード書いてみてみないとわからないのが本音。
どうしたらネットワークの仕組みを自宅で体系的に理解できるのか?
やっぱり手を動かして学ぶのが一番手っ取り早い
最初に学ぶのに一番おすすめするのがソケットプログラミングです。
なぜなら、根本的な通信のやり取りをどのように行っているかというのがコードを通じてわかるから、なんですね。
ネットワークの仕組みを学ぶにはもってこいではないかと。
というわけで、Python3でソケットプログラミングに挑戦してみました。
参考サイトに書いてあるコードは2系のものだったので、ちょっと苦労しましたが、通信の理解が深まった気がします。
ローカルホスト上でチャットをするコードです。
import socket
HOST='localhost'
PORT=5007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
soc, addr=s.accept()
print("Connected by",addr)
print("Let's chat!")
while 1:
data = input('(server) > ')
soc.send(bytes(data,'utf-8'))
data = soc.recv(1024)
print("(client) >" , data)
if data == "quit":
break
soc.close()
import socket
HOST='localhost'
PORT=5007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
print("just a moment")
while 1:
data = s.recv(1024)
print('(server) > ', data)
data = input('(client)>')
s.send(bytes(data,'utf-8'))
if data == 'quit':
break
s.close()
チャットのやり方
ターミナルを二つ立ち上げる
それぞれ起動させる。順番はserver.pyを立ち上げてからclient.pyを起動させる
文字を入力する
とまぁこんな感じでした。
通信がbyteで処理されているということがわかるだけでも、今回の学びは価値があるのではないかと。
是非やってみてください。
参考サイト
Pythonでネットワークプログラミング(1)
http://d.hatena.ne.jp/Megumi221/20110310/1299745785