皆さんの協力のもと,今日まとまった仕事が1つ片付いた.
皆さんの努力に頭が下がる思いだ.
まだ締切間際の作文が2つ手元にあるので一息ついている場合ではないが,
次のために少しだけ勉強を始めた.
プログラム間通信をさせたい,というのが次の課題だ.
チームの中にはこの手のプログラミングのプロもいるが,
自分でも多少は知らない事には議論にもならないので学ぼうと思う.
まずは socket の使い方,振る舞いを簡単なプログラムで理解したい.
ネットで調べるとすぐにみつかる簡単な例題を基に少し変更を加えたもので動作を検証した.
プログラム間のsocket通信は,一方をサーバー,他方をクライアントにして,接続を確立する.
プログラムは以下のような感じ.
上記プログラムを2つのターミナル上で,それぞれサーバー,クライアントを立ち上げて実行してみる.
サーバー側は listen(1) のところで,クライアントからの connect が来るのを待つ.
クライアントが connect してきたら,それを accept して,connection を確立する.
その後,サーバーはメッセージの recv (受信)をするために待機,
クライアントは,メッセージを send (送信)するための文字列を標準入力から受け取り,それをサーバーに send する.
このとき,標準入力から入力された文字が . (ピリオド)だったら,break でクライアント側で処理が終わり,socket が close される.
このとき,サーバーは空の data を受け取り,'End' に入って,通信を close する.
入力がピリオドでなければ,サーバーは文字列を受信し,それを表示する.続いて,返信用文字列を標準入力から受け取り,クライアントへ send する.
クライアントは受信して 'Returned message' として表示する.
このときも,ピリオドが入力されればコネクションは切断される.
以下,実行例.
プログラム間通信関連メモの目次
皆さんの努力に頭が下がる思いだ.
まだ締切間際の作文が2つ手元にあるので一息ついている場合ではないが,
次のために少しだけ勉強を始めた.
プログラム間通信をさせたい,というのが次の課題だ.
チームの中にはこの手のプログラミングのプロもいるが,
自分でも多少は知らない事には議論にもならないので学ぼうと思う.
まずは socket の使い方,振る舞いを簡単なプログラムで理解したい.
ネットで調べるとすぐにみつかる簡単な例題を基に少し変更を加えたもので動作を検証した.
プログラム間のsocket通信は,一方をサーバー,他方をクライアントにして,接続を確立する.
プログラムは以下のような感じ.
====サーバー側==== | ====クライアント側==== | |
from socket import * | from socket import * |
上記プログラムを2つのターミナル上で,それぞれサーバー,クライアントを立ち上げて実行してみる.
サーバー側は listen(1) のところで,クライアントからの connect が来るのを待つ.
クライアントが connect してきたら,それを accept して,connection を確立する.
その後,サーバーはメッセージの recv (受信)をするために待機,
クライアントは,メッセージを send (送信)するための文字列を標準入力から受け取り,それをサーバーに send する.
このとき,標準入力から入力された文字が . (ピリオド)だったら,break でクライアント側で処理が終わり,socket が close される.
このとき,サーバーは空の data を受け取り,'End' に入って,通信を close する.
入力がピリオドでなければ,サーバーは文字列を受信し,それを表示する.続いて,返信用文字列を標準入力から受け取り,クライアントへ send する.
クライアントは受信して 'Returned message' として表示する.
このときも,ピリオドが入力されればコネクションは切断される.
以下,実行例.
====サーバー側==== | ====クライアント側==== | |
22:30> python socket1_server.py | 22:31> python socket1_client.py |
![やじるし](https://emoji.ameba.jp/img/user/yu/yuka-k-blog/12799.gif)