[#46143] るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果 — eiichi_maekawa@...

62 messages 2009/07/02
[#46153] Re: るびま 標準添付ライブラリ紹介 第3回のサンプル EUC-JPの結果 — "NARUSE, Yui" <naruse@...> 2009/07/03

成瀬です。

[#46165] Re: に関する1.8.6→1.8.7または、1.9へのバージョンアップ — eiichi_maekawa@... 2009/07/05

前川です。

[#46281] rubyの変数の扱いについて — "前川 映一" <eiichi_maekawa@...> 2009/08/17

前川です。

[#46283] Re: rubyの変数の扱いについて — "(株)ネットフォレスト 植田裕之" <ueda@...> 2009/08/17

植田と申します。

[#46146] 文字変換 — eiichi_maekawa@...

16 messages 2009/07/03
[#46147] Re: 文字変換 — Hidetoshi NAGAI <nagai@...> 2009/07/03

永井@知能.九工大です.

[#46148] Re: 文字変換 — eiichi_maekawa@... 2009/07/03

前川です。

[ruby-list:46136] 足し算ゲームサーバー

From: 牛坂 博則 <ushizaka@...>
Date: 2009-07-02 04:19:44 UTC
List: ruby-list #46136
牛坂ともうします。"ruby アプリケーションプログラム"を勉強中です。このな
かの5.6.5章の1対1の非同期通信のところをいま取り組んでいます。serverを立
ち上げて接続しても、途中で止まってしまいます。ちなみにwindows XP上でコマ
ンドプロンプトより実行しています。

server側(プログラム名 sleep.rb)
D:\ruby_s>sleep.rb 7777
"..... 5\n"
".... 4\n"
"... 3\n"
".. 2\n"
". 1\n"

client側(プログラム名 add-client.rb)
D:\ruby_s>add-client localhost 7777
Are you ready?
ここで止まってしまいます。
そしてreturnキーをおすと
..... 5
.... 4
... 3
.. 2
. 1
と表示されます。

以下にserver側のcodeを示します。

require 'socket'
require 'thread'

port = if ARGV[0] then ARGV[0] else 12345 end
gate = TCPServer.open(port)
m = Mutex.new
srand

def gen_question(length)
num = rand(9) + 1
correct = num
question = num.to_s
(2..length).each {
num = rand(9) + 1
correct += num
question += " + #{num}"
}
return correct, question
end

loop do
sock = gate.accept

begin
sock.write "Are you ready?\n"
[5,4,3,2,1].each{|count|
sleep 1
sock.write "#{'.'*count} #{count}\n"
p "#{'.'*count} #{count}\n"
}
rescue
sock.close
next
end

end


以下にclient側のcodeを示します。
require 'socket'

#STDOUT.sync = true
host = if ARGV[0] then ARGV[0] else 'localhost' end
port = if ARGV[1] then ARGV[1] else 12345 end
socket = TCPSocket.open(host, port)

th_get = Thread.start {
while msg = socket.gets
print msg
end
}

th_ans = Thread.start {
while msg = STDIN.gets
socket.write msg
end
# sock.shutdown(1)
}

th_get.join
th_ans.exit if th_ans.alive?
socket.close

-- 



               //////☆
               ////★
               //☆   牛坂 博則
               ★   





In This Thread

Prev Next