にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

UDPで通信する

なんかややこしかったのでメモ。

受信側

require 'socket'
u1 = UDPSocket.open()
u1.bind("0.0.0.0", 10000)
p u1.recvfrom(65536)

送信側

require 'socket'
u2 = UDPSocket.new()
u2.connect('localhost', 10000)
u2.send('Hello world!' , 0)

実行結果

先に受信側を実行し、送信側を実行

["Hello world!", ["AF_INET", 32818, "localhost", "127.0.0.1"]]

受信したデータは配列になっており、第1項が受信データの内容、第2項がソケットの接続情報の配列になっている。
接続情報については、Rubyリファレンスマニュアル - IPSocketのaddrを参照。