UDPで送受信を行う

単純に2つのポートを開いて
Server->Client ... port:10000
Client->Server ... port:10001
として双方向の通信を行ってみます。

UDPのため送信されたデータが届くことは保証されないですが、TCPより手続きが簡単かと思います。

  • サーバ側のプログラム
require 'socket'

u1 = UDPSocket.new()
u1.bind('localhost', 10001)

u2 = UDPSocket.new()
u2.connect('localhost', 10000)


loop do
  sleep 1
  begin
    p u1.recvfrom_nonblock(65536)
  rescue
    puts "[Server] Error, recvfrom"
  end

  begin
    puts "[Server] >>"
    u2.send('[Server] Hello world', 0)
  rescue
    puts "[Server] Error, send"
  end
end
  • クライアント側のプログラム
require 'socket'

u1 = UDPSocket.new()
u1.bind('localhost', 10000)

u2 = UDPSocket.new()
u2.connect('localhost', 10001)


loop do
  sleep 1
  begin
    p u1.recvfrom_nonblock(65536)
  rescue
    puts "[Client] Error, recvfrom"
  end

  begin
    puts "[Client] >>"
    u2.send('[Client] Hello world', 0)
  rescue
    puts "[Client] Error, send"
  end
end