Module: RNCP::Networking
- Included in:
- NcpListener, NcpPusher
- Defined in:
- lib/rncp/networking.rb
Overview
Contains common networking operations shared between listeners and pushers.
Instance Method Summary collapse
-
#bind_broadcast ⇒ UDPSocket
Creates a socket that sends and receives via Broadcast address.
-
#bind_multicast ⇒ UDPSocket
Creates a socket that sends to Multicast group.
-
#bind_tcp ⇒ Socket
Creates a TCP connection to listen for direct connections.
-
#join_multicast ⇒ UDPSocket
Creates a socket bound to the Multicast group.
Instance Method Details
#bind_broadcast ⇒ UDPSocket
Creates a socket that sends and receives via Broadcast address. Returns nil if fails.
78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/rncp/networking.rb', line 78 def bind_broadcast begin bsock = UDPSocket.open bsock.setsockopt :SOL_SOCKET, :SO_BROADCAST, 1 bsock.setsockopt :SOL_SOCKET, :SO_REUSEADDR, 1 bsock.bind '', RNCP::PORT return bsock rescue puts "[!] Broadcast not supported" return nil end end |
#bind_multicast ⇒ UDPSocket
Creates a socket that sends to Multicast group. Returns nil if fails. See #join_multicast to listen for Multicast.
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/rncp/networking.rb', line 61 def bind_multicast begin msock = UDPSocket.open msock.setsockopt :IPPROTO_IP, :IP_MULTICAST_TTL, [32].pack("i") msock.setsockopt :SOL_SOCKET, :SO_REUSEADDR, 1 msock.bind '', RNCP::PORT msock.setsockopt :IPPROTO_IP, :IP_MULTICAST_LOOP, 1 return msock rescue puts "[!] Multicast not supported" return nil end end |
#bind_tcp ⇒ Socket
Creates a TCP connection to listen for direct connections
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/rncp/networking.rb', line 24 def bind_tcp sock = Socket::new Socket::AF_INET, Socket::SOCK_STREAM, 0 opts = [1].pack("i") addr = [Socket::AF_INET, RNCP::PORT, 0, 0, 0, 0, 0, 0] .pack("snCCCCNN") sock.setsockopt Socket::SOL_SOCKET, Socket::SO_REUSEADDR, opts sock.bind addr sock.listen 1 return sock end |
#join_multicast ⇒ UDPSocket
Creates a socket bound to the Multicast group. Returns nil if fails. This socket is used to listen for messages sent via Multicast. See #bind_multicast to send.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/rncp/networking.rb', line 40 def join_multicast begin msock = UDPSocket.new membership = IPAddr.new(RNCP::IPV4_GROUP).hton + IPAddr.new("0.0.0.0").hton puts "[#] Joining Multicast group" msock.setsockopt :IPPROTO_IP, :IP_ADD_MEMBERSHIP, membership msock.setsockopt :SOL_SOCKET, :SO_REUSEADDR, 1 msock.bind "0.0.0.0", RNCP::PORT return msock rescue puts "[!] Multicast not supported" return nil end end |