2009年8月10日 (月曜日)

10:35:00 # Life HTTPクライアントのデバッグをするためにHTTPサーバをいろいろといじる。 適当なサーバをたてるときに適当なポート番号を使ってほしいときがある。 sockaddr.sin_port = 0 と設定しておくとカーネルは適当なポート番号をふってくれるらしい。 ただ、そのポート番号が何番かということはどうやったらわかるのだろうか? netstat で確認することができる。 netstat をstraceで眺めてみた感じではプロセス単位でファイルデスクリプタを確認し、 /proc/net/tcpでファイル(ソケット)に対応するポート番号を確認しているようだ。 しかし、この方法はLinuxアーキテクチャに依存しすぎるなぁ、とおもって見ていると、 getsockname というのを使えばよいということがわかった。 ソケットのファイルデスクリプタを与えるとアドレスとポート番号が分かる。素晴らしい。

$ ls -l /proc/24305/fd/3
lrwx------ 1 dancer dancer 64 2009-08-10 10:36 /proc/24305/fd/3 -> socket:[126846]
$ cat /proc/net/tcp | grep 126846
   1: 00000000:9E35 00000000:0000 0A 00000000:00000000 00:00000000 00000000  1000        0 126846 1 ffff8100189cc240 300 0 0 2 -1                 

	

14:21:43 # Life Javaと格闘数時間。 とりあえず何かができたが、生産的な気がしない。 Javaの使い方とEclipseの使い方がわからなくて時間が過ぎている部分が多すぎ。

$ javac -classpath ../lib/commons-codec-1.3.jar jp/gr/netfort/dancer/mixi/WsseString.java 
$ java -classpath ../lib/commons-codec-1.3.jar:. jp.gr.netfort.dancer.mixi.WsseString
UsernameToken Username="dancer", PasswordDigest="M4896tPp+iS46+1bGhIp+537CJc=", Nonce="voGH85HRGNQ=", Created="2009-08-10T05:21:11Z"
	
Junichi Uekawa

$Id: dancer-diary.el,v 1.93 2009/01/04 03:42:29 dancer Exp $