- 2007/08/23 Thu
-
今日はデミタスで。
続・SO_EXCLUSIVEADDRUSE。
SO_REUSEADDRをSO_EXCLUSIVEADDRUSEにしてみたところhijackしてしまう問題は解消されたけど、今度はプロセスを再起動するとたまにbindに失敗するように。
どうも、クライアント側がcloseするより早く再起動がかかるとFIN_WAIT2のソケットが残っているので失敗する模様。http://msdn2.microsoft.com/en-us/library/ms740618.aspxAn important caveat to using the SO_EXCLUSIVEADDRUSE option exists: If one or more connections originating from (or accepted on) a port bound with SO_EXCLUSIVEADDRUSE is active, all bind attempts to that port will fail.An active port for TCP is defined as being in the ESTABLISHED, FIN_WAIT, FIN_WAIT_2, or LAST_ACK states.
あー。
だから、それじゃLinuxと挙動が合わねぇんだって!LISTEN
LISTEN
ESTABLISHED
ESTABLISHED
FIN_WAIT_2
CLOSE_WAIT
TIME_WAIT
Windows SO_REUSEADDR 0 0 0 0 SO_EXCLUSIVEADDRUSE WSAEADDRINUSE WSAEADDRINUSE WSAEADDRINUSE 0 Linux SO_REUSEADDR EADDRINUSE EADDRINUSE 0 0
IPHLPAPIでGetTcpTableしてhijackしないか確認した上でSO_REUSEADDR使うとかしないと駄目なのか。
- 2007/08/22 Wed
-
資源ごみだし損ねたー。
8時までにだせって書いてあるのに7時半にだそうとしたら回収済みってどういうことだ。 朝きて樽です。
昼飯に樽です。
昼下がりに樽です。
正味18kcalです。 VisaulC++の/W4では警告がでないけどgccの-Wallだと警告になるコードをちまちま修正して。
- 2007/08/21 Tue
-
カロリー2倍!(うるさいよ) bindされているポートに別ソケットでbindしてもエラーにならずnetstatで確認しても複数のソケットが同アドレス同ポートでLISTENしていることになっていてなんだよそれと思ったら、Using SO_REUSEADDR and SO_EXCLUSIVEADDRUSE (Windows)
http://msdn2.microsoft.com/en-us/library/ms740621.aspxIn the case where the first call to bind sets either SO_REUSEADDR or no socket options at all, the second bind call will "hijack" the port and the application will be unable to determine which of the two sockets received specific packets sent to the "shared" port.
てことですか。
LinuxとSO_REUSEADDRの挙動が違うじゃないのさ。http://www.linux.or.jp/JM/html/LDP_man-pages/man7/socket.7.htmlSO_REUSEADDR
bind(2) コールに与えられたアドレスが正しいかを判断するルールで、ローカルアドレスの再利用を可能にする。つまり PF_INET ソケットなら、そのアドレスにバインドされたアクティブな listen 状態のソケットが存在しない限り、バインドが行える。 listen 状態のソケットがアドレス INADDR_ANY で特定のポートにバインドされている場合には、このポートに対しては、どんなローカルアドレスでもバインドできない。
SO_EXCLUSIVEADDRUSEにしたらWSAEADDRINUSEが返るように。
パターンはUsing SO_EXCLUSIVEADDRUSE (Windows)
http://msdn2.microsoft.com/en-us/library/ms740618.aspx
の"Bind Behavior with Various Options Set"に。
- 2007/08/20 Mon
-
昼食は無糖ブラックです。3kcalです。小坂那也です。(挨拶)
休み中の鬱憤を晴らすかのように8時から20時までぶっ続けでコードを書き続け。
というか、普通は仕事の鬱憤を休みに晴らすんじゃなかろうかと思いました。
うん。
なんだろう。 休み中に気にしていた問題は特に問題になっていなかったので問題はあるものの問題を継続していこうと思います。はい。
大問題だよ。
- 2007/08/19 Sun
-
クリーニング屋のおばちゃんに相変わらずの長袖を信じられないと笑われる。
全日本長袖党員ですので仕方ないのです。ええ。
なんだそれ。 1600倍でちまちまドットを。
- 2007/08/18 Sat
-
ランチパックスペシャルサイトで、投票ボタンをクリックすると、コメント投稿ページが表示されます。3つの質問すべてに答えると「ランチパックオリジナルブログパーツ」をプレゼント!
していたので、ブログではないけれど貼ってみる。
http://www.yamazakipan.co.jp/lunch-p/index.html 何も表示されないと思ったらJavaScriptを切っているせいだ。 DR-47WY50BA到着。
CW-E60での印刷も問題なく。
やれやれ。
つーか、Amazonのお急ぎ便はお急いでいるのに配達時間が不明なので届くまでやきもきしますね。
ついでに注文しておいた"文学少女"と穢名の天使を読みながらDVDを焼き直す。
- 2007/08/17 Fri
-
無印良品ネットストアでキャリーボックス大とキャリーボックス小とストッカーと組立式ワゴンを。
ふと目が覚めて。
しまった宅配便がーと思ったタイミングで宅配便が。
CW-E60到着です。
ディスクタイトルプリンタ。
http://casio.jp/d-stationery/cd_r/cw_e60/ 試しに印刷してみたところうまくいかず。http://casio.jp/support/EZ-USB/media/本機は熱転写式のプリンターです。プリンターヘッドがDISC( CD-R / RW , DVD-R )の表面をなぞるように動作するため、プリンタブル(インクジェットプリンター対応)品、及びDISCタイトルプリンターの印字エリアに凹凸及びデザインのあるメディアにはきれいに印刷ができない場合があります。上記の推奨メディアをご使用ください。
って、うぉぉい!?
最近店頭に並んでいるのはほとんどプリンタブルじゃないかバカー! 仕方ないのでDR-47WY50BA発注。
お急ぎ便を利用してみるテスト。
あー。
うん。
しかしだ。
この80枚以上残ったDVD-R47WPYSBAは一体どうしたら。 DVD-Rメモ。DR-47WTY50BA(That'sレーベル、セラミックコート)
http://www.amazon.co.jp/Thats-%E3%83%87%E3%83%BC%E3%82%BF%E7%94%A8DVD-R-4-7GB-50%E6%9E%9A%E5%85%A5%E3%82%8A-DR-47WTY50BA/dp/B000A4ZNRG/ref=pd_bbs_2/249-6668904-5752362?ie=UTF8&s=electronics&qid=1187349430&sr=8-2
CD-Rメモ。
- 2007/08/16 Thu
-
無印良品でキャリーボックス大とキャリーボックス小を。
と思いきや、大が売り切れていたのでキャリーボックス小とドキュメントケースを。 等倍でしかDVD-Rが焼けなーいと思ったらPIOモードでした。FAQ!
DMAに変更したら4倍で焼けた。
8倍は88.64Mbpsとかなのでネットワーク経由じゃ無理。
- 2007/08/15 Wed
-
一睡もしていません。
朝食は4時でした。
昼食はまだです。
炎天下です。
黒シャツです。
長袖です。
ぶっ倒れそう。 無印良品でキャリーボックス大とキャリーボックス小を。 ハードディスクを買いに出かけて。
DVD-Rを100枚買って帰ってくる。
そんなに使う予定もないのに。
- 2007/08/14 Tue
-
RedHat8.0のcomps.xmlカスタマイズメモ。
なんで今更RedHat8.0という話はさて置く。
<!-- Meta information will go here eventually -->以下がパッケージグループ設定。
packagelistタグにpackagereqタグでパッケージを列挙。
typeアトリビュートにmandatoryかdefaultかoptionalを設定。
mandatoryとdefaultがデフォルトインストール対象でdefaultとoptionalが動的変更可。
<!-- META GROUPS -->以下がインストールの種類毎のパッケージグループ設定。
grouplistタグにgroupreqタグでパッケージグループを列挙。
<!-- group hierarchy -->以下がパッケージグループの階層設定。
grouphierarchyタグのcategoryタグのsubcategoriesタグにsubcategoryタグでパッケージグループを列挙。
<!-- packages -->以下がパッケージの依存関係設定。
packageタグのdependencylistタグにdependencyタグで依存パッケージを列挙。 適当に不要なパッケージをoptionalにしたり必要なパッケージをdefaultにしたり、grouplistから不要なパッケージグループを削除したり必要なパッケージグループを追加したり、カスタマイズしたcomps.xmlをSuperウルトラISOで差し替えたり。
http://www.intercom.co.jp/iso/index.html