Skip to content

Instantly share code, notes, and snippets.

View cmol's full-sized avatar

Claus Lensbøl cmol

View GitHub Profile
cmol@qui-gon:~$ ruby src/chat_server_udp.rb
Client connected from ::ffff:127.0.0.1 using IPv4
Client connected from ::1 using IPv6
require "socket"
LISTEN_ADDR = "::"
LISTEN_PORT = 12345
MSG_LENGTH = 256
FLAGS = 0
# Create socket and bind it to the listen on all addresses and the given port
server_socket = UDPSocket.new :INET6
server_socket.bind(LISTEN_ADDR, LISTEN_PORT)
irb(main):003:0> Socket.getaddrinfo("localhost", 12345, :AF_UNSPEC, :DGRAM)
=> [
["AF_INET6", 12345, "::1", "::1", 10, 2, 17],
["AF_INET", 12345, "127.0.0.1", "127.0.0.1", 2, 2, 17]
]
Socket.getaddrinfo(CONNECT_ADDR,CONNECT_PORT, :AF_UNSPEC, :DGRAM).each do | con |
af, port, hostname, ip, pf, sock_type, ipproto = con
Addrinfo.udp(ip, port).connect do |socket|
socket.send("Connected via #{af}", FLAGS)
message, server = socket.recvfrom(MSG_LENGTH)
puts message
end
end
cmol@qui-gon:~$ ruby echo_client_udp.rb
[IPv6] Connected via unspecified address family socket
[IPv6] Connected via AF_INET6
[IPv4] Connected via AF_INET
require "socket"
CONNECT_ADDR = "localhost"
CONNECT_PORT = 12345
MSG_LENGTH = 256
FLAGS = 0
Addrinfo.udp(CONNECT_ADDR, CONNECT_PORT).connect do |socket|
socket.send("Connected via unspecified address family socket", FLAGS)
message, server = socket.recvfrom(MSG_LENGTH)
[["if_name", index, "ip_address"],[...]]
cmol@third-host:~$ ruby src/multicast.rb
Using local interface enp0s3 with address fe80::a00:27ff:fe07:dea6%enp0s3
========= Sending echo REQUEST from fe80::a00:27ff:fe07:dea6%enp0s3
[REPLY] Hello from fe80::71c0:aa40:6d16:7c59%wlp4s0
[REPLY] Hello from fe80::ade4:80af:c170:6340%enp0s31f6
cmol@qui-gon:~$ ruby src/multicast.rb
Using local interface wlp4s0 with address fe80::71c0:aa40:6d16:7c59%wlp4s0
========= Sending echo REQUEST from fe80::71c0:aa40:6d16:7c59%wlp4s0
cmol@second-host:~$ ruby src/multicast.rb
Using local interface enp0s31f6 with address fe80::ade4:80af:c170:6340%enp0s31f6
[REPLY] Hello from fe80::71c0:aa40:6d16:7c59%wlp4s0