2007年 01月 05日

parallels UDP

どうも paralles とホスト間で RingServer が見つけられない。

Hamachi を入れて試してみたけどだめっぽい。でも他の Windows 機を RingServer にすると paralles 内からも発見できる。

#<Errno::EBADF: Bad file descriptor - connect(2)> (DRb::DRbConnError)

とかでてるからそもそもなんかおかしいみたいだ

One click installer でインストールしなおしたら上のエラーはでなくなった。
しかし相変わらず RingNotFound。ホストコンピュータじゃなければ接続できるっぽいんだけどなぁ

やっぱり DNS でした。少し前の secondlife さんのアレと全く同じハマりをしてた

オートリロードってだけなら、RingServer と TuplseSpace とか使わないで、UDP パケットなげっぱなしでリレーするだけでもいいかも? これなら逆方向から接続しなおすとかないからホスト名ひくとかいらない、よなぁ。 リクエストのシーケンス番号つけて一回着たのは無視するようにしとかないと無限ループする予感でこわい。

Rake って便利だなぁとおもった瞬間

require 'rake'
require 'rake/packagetask'

Rake::PackageTask.new('PackageBaseName', VERSION) do |pkg|
	pkg.need_zip = true
	pkg.package_files.include('plugins/*', TARGET, RESOURCES, 'README*')
end

rake test 実行するのもいいけど、パッケージングもたのしい

Socket プログラミング

ほとんどわからない。(recv(4096)) とかやるけど4096以上きたときってどうなるんだろう。送信側とあらかじめ決めておくのかな

Socket プログラミング

とりあえず最小構成書いてみないとね!!! っていうかいまさら Socket プログラミングかよ遅くねpgrとか言われそう。

require 'socket'

@s = UDPSocket.new
@s.bind('', 9989)
p @s

loop do
	p @s.recv(1014)
end

require 'socket'

['<broadcast>', 'localhost'].each do |host|
	p host
	@s = UDPSocket.open
	begin
                # ないと permission error
		@s.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
		p @s.send('aaa', 0, host, 9989)
	ensure
		@s.close
	end
end

送るだけ送る。"aaa" が二回表示される。

うちの環境の片思い

Mac さんから Windows さんへは思い (UDP) が伝わらない
Windows さんから Mac さんへは伝わる。

なんでだ!! Mac さんの思いはもっと報われるべきじゃないのか!!

UI 再考

もっかい考え直し。限りなくシンプルになったので UI いらない気がする。
メニューだけの構成にしようか、なぁ。またかよって感じだけどそれが一番簡単だ。