Squeak で Socket通信(正)
umejava さんがコメントで教えてくれました(ありがとうございます)が、昨日のエントリーで #waitForAcceptFor: がうまく使えず Squeak 版の欠点(?)とか書いたのは、単に使い方我が悪かっただけでした。
しかもOldSocket の examples カテゴリ に殆どそのままのサンプルがあったという体たらく。いろいろ解らない/見てないで適当にやっているの丸出しです。恥ずかしい限りなので、この週末は穴を掘って入ることにします。ざくざく。
というわけで、サーバー側を Squeak の Workspace、クライアント側を Python (Idle)で、前回のエントリーを焼き直しです。
まずは接続
"Squeak" server _ Socket newTCP. server listenOn: 7878 backlogSize: 4. sock _ server waitForAcceptFor: Socket standardTimeout. Transcript cr; show: DateAndTime now; show: ' '; show: sock.
>>> #Python(Idle) >>> import socket >>> >>> sock = socket.socket( socket.AF_INET, >>> socket.SOCK_STREAM ) >>> sock.connect(('localhost', 7878))
(Transcript の出力)
2007-08-24T17:30:58+00:00 a Socket[connected]
次にサーバ側からデータ送信です。
"Squeak" sock sendData: 'Welcome to Squeak'.
>>> #Python(Idle) >>> sock.recv(100) 'Welcome to Squeak'
今度はクライアント側からサーバへデータ送信。
>>> #Python(Idle) >>> sock.send( "Hello, I'm Python" )
"Squeak"
Transcript cr; show: sock receiveData.
(Transcript の出力)
Hello, I'm Python
で、ソケットクローズ。
"Squeak"
sock closeAndDestroy.
server closeAndDestroy.
>>> #Python(Idle)
>>> sock.close()
追記(2007-09-07):
pythonでsocket入門: 思い立ったが吉日生活 さんと同じような、flashの紙芝居アニメも用意しました。Winkって初めて使ってみましたが、イイですね。