[#5880] "Linux Journal Vol.6" carries an article on Ruby — Shin-ichiro HARA <sinara@...>

原です。

16 messages 1998/01/19
[#5881] Re: "Linux Journal Vol.6" carries an article on Ruby — matz@... (Yukihiro Matsumoto) 1998/01/19

まつもと ゆきひろです

[#5905] win and unix, and so on — TAKAHASHI Masayoshi <maki@...>

高橋と申します。はじめまして。しばらくROMしてました。

27 messages 1998/01/20
[#5906] Re: win and unix, and so on — matz@... (Yukihiro Matsumoto) 1998/01/20

まつもと ゆきひろです

[#5912] Re: win and unix, and so on — WATANABE Hirofumi <watanabe@...> 1998/01/20

わたなべです.

[#5922] Re: win and unix, and so on — Shin-ichiro HARA <sinara@...> 1998/01/20

原です。

[#5951] How to use TkMenu ? — Kikutani Makoto <kikutani@...>

きくたにです。

16 messages 1998/01/21
[#5952] Re: How to use TkMenu ? — matz@... (Yukihiro Matsumoto) 1998/01/21

まつもと ゆきひろです

[#6023] Comparison with Other Languages (Re: [python-ml-jp 54] Re: Reasons why I prefer to use Python) — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

8 messages 1998/01/26

[#6055] Ruby連載 第3回 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

68 messages 1998/01/28
[#6057] Re: Ruby 連載 第 3 回 — Kikutani Makoto <kikutani@...> 1998/01/28

きくたにです。

[#6060] Re: Ruby 連載 第 3 回 — matz@... (Yukihiro Matsumoto) 1998/01/28

まつもと ゆきひろです

[#6073] Re: Ruby連載 第3回 — hisanori@... 1998/01/28

松尾です。こんばんは。

[#6089] Re: Ruby連載 第3回 — matz@... (Yukihiro Matsumoto) 1998/01/29

まつもと ゆきひろです

[#6119] man/date/time — Tadayoshi Funaba <tadf@...>

こんにちは、ちょっと訊きたいことがあります。

37 messages 1998/01/29
[#6128] lib/date.rb (Re: man/date/time) — matz@... (Yukihiro Matsumoto) 1998/01/30

まつもと ゆきひろです

[#6136] Re: man/date/time — keiju@... (石塚圭樹 ) 1998/01/30

けいじゅ@日本ラショナルソフトウェアです.

[#6155] Re: man/date/time — Tadayoshi Funaba <tadf@...> 1998/01/31

>すいません. ruby-devにだけポストしていました.

[ruby-list:5875] Re: Are there any sample programs for UDP socket ?

From: Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>
Date: 1998-01-13 14:45:48 UTC
List: ruby-list #5875
なんとか send 側のコードは動きました:-)

From: matz@netlab.co.jp (Yukihiro Matsumoto)
Subject: [ruby-list:5874] Re: Are there any sample programs for UDP socket ?
Date: Tue, 13 Jan 98 18:44:12 +0900

> さて,まずいくつかの点で謝罪した方がよいような気がします.

謝罪なんてとんでもありません。こんな楽しい言語を作ってくださったのに:-)


>   1. UDPソケット専用のクラスはまだありません.Socketクラスで
>      Cとほとんど同じようにぽちぽちプログラムするしかないです.
>      面倒ですね.Rubyらしくないですね.その通りです.ごめん
>      なさい.

C なソケットプログラマには分かりやすいという話もあります:-) 今なら
UDPsocket クラスに要望を出せるということでもありますよね。



>   2. C言語でシステムコールのsendを使ったことがありますか? 

はい。


>      Rubyのsendは基本的にシステムコールのsend/sendtoと同じで
>      す.ただし,以下の点が違います.

この点はマニュアルから読み取れました。


>         * sendtoのアドレスはpackした構造体を使います.

pack するべきテンプレートおよび要素が分かりませんでした。でも、ふと思い
付いてperl のマニュアルや sys/socket.h を眺めてなんとかなりました。


>         * Rubyの文字列は長さを知っていますからmsg,lenの代わ
>           りに文字列1つを使います.

これは文字列で良いのですね。ありがとうございました。


>   3. send(2)というのはUNIXのmanのsection 2(システムコール)の
>      項目と言う意味です.説明が少なくてごめんなさい.

少なくとも僕には通じていました。ご安心下さい。


>   4. なによりRubyでUDPプログラミングをしたことのあるひとがい
>      ません.バグがあるかも.

少なくとも短い文字列を send するだけならできました。

そういえば gethostbyname あたりのメソッドがクラスメソッドであることが分
からずにちょっと苦労しました。クラスメソッドじゃないとするとかっこ悪いの
ですぐに想像できてしかるべきなのかもしれませんが、結局ソースコードを眺め
てて気が付きました。マニュアルに一言あるとうれしいかと思います。


ということで、とりあえず動いたサンプルをつけておきます。ruby を使いはじ
めて日が浅いのでおしゃれな記述になっていないかもしれません。youbin 付属
の sendto コマンド相当のものです。

さ、次は recv 側だ。
--
としちゃん // toshi@tea.forus.or.jp, toshi@csce.kyushu-u.ac.jp
#! /usr/local/bin/ruby
# $Id: udpclnt.rb,v 1.1 1998/01/13 14:40:16 toshi Exp $
# udp socket example - client side
# usage: ruby udpclnt.rb host port message

require "socket"

if ARGV.length != 3
  print "Usage: ruby udpclnt.rb host port message\n"
  exit 1
end

host= ARGV.shift
service = ARGV.shift
message = ARGV.shift

remote_addr = Socket.gethostbyname(host)
port = Socket.getservbyname(service, "udp")

server_addr = [ 16, Socket::AF_INET, port, remote_addr[3] ]
sockaddr_in = "CCnNx8"

s = Socket.open(Socket::PF_INET, Socket::SOCK_DGRAM, 0)
s.send(message, 0, server_addr.pack(sockaddr_in))
s.close

In This Thread