[#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:5876] Re: Are there any sample programs for UDP socket ?

From: matz@... (Yukihiro Matsumoto)
Date: 1998-01-14 03:53:12 UTC
List: ruby-list #5876
まつもと ゆきひろです

In message "[ruby-list:5875] Re: Are there any sample programs for UDP socket ?"
    on 98/01/13, Toshihiko SHIMOKAWA / 下川俊彦 <toshi@csce.kyushu-u.ac.jp> writes:

|[1  <text/plain; iso-2022-jp (7bit)>]
|なんとか send 側のコードは動きました:-)

おお,実はとしちゃん(とお呼びすればよろしいんでしょうか)のメー
ルに触発されて,機能はUDPと格闘しちゃいました.
# UDPsocketクラスを作っちゃいました.^^;;;

まず,お約束のサンプルです.としちゃんはもうできちゃってるん
で参考程度に.

-- udp.rb
require 'socket'

include Socket::Constants
hostaddr = Socket::gethostbyname("localhost")[3]

sockaddr_in = "S n a4 x8"
port = 7			# echo
sockaddr = [AF_INET, port, hostaddr].pack(sockaddr_in)
p sockaddr
s = Socket::open(AF_INET, SOCK_DGRAM, 0)
#s.connect(sockaddr)
s.send("foo\r\n", 0, sockaddr)
s,addr = s.recvfrom(100)
p s
p addr.unpack(sockaddr_in)
--

Socket::Constantsをincludeするとか,ドキュメントに載ってない
わざを使ってますね.ドキュメントに追加しておきます.

それからUDPsocketクラスを使ったものです.もちろん,これは私
の手元にしかありませんので,次のバージョンからしか使えません.

-- udp2.rb
require 'socket'

include Socket::Constants

s = UDPsocket.new
#s.connect("localhost", "echo")
s.send("foo\r\n", 0, "localhost", "echo")
p s.recvfrom(100)
--

UDPsocketクラスのメソッドは

  UDPsocket.open
  UDPsocket.new

  connect(host, port)
  bind(host, port)
  send(mesg, flags[, host, port])
  recvfrom(len)

です.recvfromは[文字列, [host, port]]という配列を返します.

その他にTCPsocketクラスの持っていた

  addr
  peeraddr
  getaddress

も使えます(共通のスーパークラスIPsocketが新設されました).

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

1.1b5が出る前でしたら上記のUDPsocketに対して自由に要望を出し
て下さい.

|>         * Rubyの文字列は長さを知っていますからmsg,lenの代わ
|>           りに文字列1つを使います.
|
|これは文字列で良いのですね。ありがとうございました。

そうですね.Cからの変換には

  * ソケットを指定する引数はレシーバになる
  * mesg, lenという2引数が文字列一つに置き換わる
  * recvfromはsockaddr構造体を引数に取らない(文字列とアドレ
    スの配列を返す)
  * sendtoはない.sendに追加の引数を指定する

という違いがあります.

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

マニュアルを書き直します.

                                まつもと ゆきひろ /:|)

In This Thread