Method: EventMachine::Connection#send_datagram

Defined in:
lib/em/connection.rb

#send_datagram(data, recipient_address, recipient_port) ⇒ Object

Sends UDP messages.

This method may be called from any Connection object that refers to an open datagram socket (see EventMachine#open_datagram_socket). The method sends a UDP (datagram) packet containing the data you specify, to a remote peer specified by the IP address and port that you give as parameters to the method. Observe that you may send a zero-length packet (empty string). However, you may not send an arbitrarily-large data packet because your operating system will enforce a platform-specific limit on the size of the outbound packet. (Your kernel will respond in a platform-specific way if you send an overlarge packet: some will send a truncated packet, some will complain, and some will silently drop your request). On LANs, it’s usually OK to send datagrams up to about 4000 bytes in length, but to be really safe, send messages smaller than the Ethernet-packet size (typically about 1400 bytes). Some very restrictive WANs will either drop or truncate packets larger than about 500 bytes.

Parameters:

  • data (String)

    Data to send asynchronously

  • recipient_address (String)

    IP address of the recipient

  • recipient_port (String)

    Port of the recipient



572
573
574
575
576
577
# File 'lib/em/connection.rb', line 572

def send_datagram data, recipient_address, recipient_port
  data = data.to_s
  size = data.bytesize if data.respond_to?(:bytesize)
  size ||= data.size
  EventMachine::send_datagram @signature, data, size, recipient_address, Integer(recipient_port)
end