ruby
  1. ruby-socket

Ruby Socket

Syntax

To use Ruby sockets, you need to require the socket library, create a new socket, set its options and then communicate using it. The basic syntax for creating a socket in Ruby is:

require 'socket'
socket = Socket.new(domain, type, protocol)
  • domain: The domain specifies the protocol family used by the socket, such as AF_INET for IPv4 or AF_INET6 for IPv6.
  • type: The type specifies the communication semantics, such as SOCK_STREAM for a reliable, stream-oriented connection or SOCK_DGRAM for an unreliable, datagram-oriented connection.
  • protocol: The protocol specifies the specific protocol to use, such as IPPROTO_TCP for TCP or IPPROTO_UDP for UDP.

Example

Here's an example of creating a socket in Ruby and connecting to a website:

require 'socket'

ip = Socket.getaddrinfo('www.example.com', 'http')[0][3]
socket = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
socket.connect(Socket.pack_sockaddr_in(80, ip))

socket.puts "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"
response = socket.read

puts response

Output

The output of the above example would be the HTML content of the website.

Explanation

In the example above, we first resolve the IP address of the website using the Socket.getaddrinfo method. We then create a new socket with the specified domain, type and protocol, and connect to the website using its IP address and port number.

Once we've established a connection, we send an HTTP request to the server using the socket.puts method and read the response using the socket.read method.

Use

Ruby sockets are used for low-level network communication, such as sending and receiving data over the internet or communicating with other processes on the same machine.

Some common use cases for Ruby sockets include building web servers and clients, implementing network protocols such as FTP or SSH, and creating peer-to-peer applications.

Important Points

  • Ruby sockets use the socket library, which provides an interface for creating and communicating with sockets.
  • Sockets can be created with various domains, types and protocols to suit different use cases.
  • Once a socket is created, it can be used to send and receive data using various methods, such as send, recv, puts and read.
  • Sockets can be used for a wide range of network communication tasks, from simple HTTP requests to complex peer-to-peer applications.

Summary

Ruby sockets are a powerful tool for low-level network communication in Ruby. They allow you to create and communicate with sockets using a variety of domains, types and protocols, and can be used for a wide range of network communication tasks. Whether you're building a web server, implementing a network protocol or creating a peer-to-peer application, Ruby sockets provide a flexible and robust solution for your networking needs.

Published on: