毎日実装の些細な部分ばかりやってると、ああ、こういう仕事って自分じゃなくても出来るんじゃないか、何故こんな事を今やっているんだとやるせない反面。明確なゴールのある事というのはパズルとして単純に面白くもある。
さてソケット。Squeak でのソケットはまだライブラリとして成熟途上にあって(一昨年ぐらいに非互換の変更があった)、未だにユーザがゴリゴリ原始的な部分を書く場合も多く地雷源になっている。最近 Croquet のコードをじっくり読んでいて、使いもしないソケットやスレッドを大量に生成して放置という事を繰り返すのに気づくのだが、何故かそれなりにデモが出来る程度には動いているのを見て、ちゃんとソケットの動作を確認してみようと思った。
調べた事は単純な事で、
ややこしいのは、TCP の同じポートを監視するソケットを二つ作れてしまう事。二つ作っても実際に待ち受ける事が出来るのは先に作った方だけだ。これはエラーにしてくれた方が良かったのに。。。既に他の人にポートを取られてしまっていた場合の検出方法が良く分からない。
UDP の場合は無保証投げっぱなしだから、こういう動作で良いのだろう。でもランダムに到着するデータをどのようにして二つのソケットに平等に返しているのかは不思議だ。