[#20083] non-block IO with TCPSocket — dn <daisuke@...>

初投稿の中村と申します。よろしくお願いします。

19 messages 2000/01/06
[#20084] Re: non-block IO with TCPSocket — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/01/06

越水です。

[#20091] Re: non-block IO with TCPSocket — とみたまさひろ <tommy@...> 2000/01/06

とみたです。

[#20133] おききしたーいでーす — akimaru <akimaru@...>

17 messages 2000/01/09
[#20138] Re: おききしたーいでーす — akimaru <akimaru@...> 2000/01/09

[#20237] Ruby/Tk multi interpreter — nagai@...

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

21 messages 2000/01/17
[#20242] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/17

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

[#20248] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/17

石橋秀仁です。

[#20254] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/18

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

[#20271] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/18

石橋秀仁です。

[#20249] FTP.open err for Windows95 — "Y Kataoka" <kataoka@...>

初めまして、片岡@KLUGと申します。

18 messages 2000/01/17
[#20252] Re: FTP.open err for Windows95 — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/01/18

なひです.

[#20342] How to build ruby(current) with cygwin — KORIYAMA Naohiro <kory@...2.so-net.ne.jp>

はじめまして、こおりやまです。

19 messages 2000/01/23
[#20362] Re: How to build ruby(current) with cygwin — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/01/24

わたなべです.

[#20422] Re: How to build ruby(current) with cygwin — Masaki Suketa<CQN02273@...> 2000/01/29

Win32OLE の作者の助田です.

[#20394] ruby-1.4.3 port to HPUX 11.00 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2000/01/26

[ruby-list:20106] Re: non-block IO with TCPSocket

From: dn <daisuke@...>
Date: 2000-01-07 03:22:44 UTC
List: ruby-list #20106
なかむらです。たくさんのアドバイス、ありがとうございます。

卒業論文に必要なデータを集めるためのプログラムで、うまくいかなくてかな
り焦ってたのですが助かりました。と思ったら!

recv, sysread, recvfromなどのメソッドを使っても、C言語のread風の動作を
してくれません。なにか、ソケットオプションの設定などが必要なのでしょう
か?僕が根本的に間違ってるのかもしれないので、問題を単純化したコードを
下にくっつけました。echoサーバーで簡単に実験できます。

いろんな用途のTCPクライアントを、すばやくいっぱい作らねばならず、C言語
でいちいち書いていたら時間がかかりすぎて留年してしまいます。なんとか
今年中に卒業するためにもRubyを使いたいので、御教授お願いいたします。

**********************************
  東京大学工学部機械情報工学専攻
    算法設計研究室修士2年

      中村 大輔
      daisuke@sanpo.t.u-tokyo.ac.jp
**********************************

#!/usr/local/bin/ruby

require "socket"

$stdout.sync = true

if ARGV.length != 2
	print "usage: #{$0} host port\n"
	exit 1
end

host = ARGV.shift; port = ARGV.shift
tcpsock = TCPsocket.open( host, port )

print "addr: ", tcpsock.addr.join( ":" ), "\n"
print "peer: ", tcpsock.peeraddr.join( ":" ),"\n"

socks = [tcpsock]

tcpsock.write "pakpakpakpak\n"

loop do
	print "."
	
	activate = select socks,nil,nil,0
	
	next if activate.nil? 
	
	if tcpsock.eof?
		print "connection closed... \n"
		tcpsock.close
		exit
	else
		print "before-reading"
#		print tcpsock.read( 100 )
		print tcpsock.recv( 100 )
#		print tcpsock.sysread( 100 )
#		print tcpsock.recvfrom( 100 )
		print "after-reading"
	end
end

In This Thread