{category}

Ruby - ネットワークプログラミング

Socket

ソケット(標準ライブラリ

意味 ネットワーク通信の基本クラス


Socketとは?

Socketは、ネットワーク通信を行うための基本的なクラスです。IPアドレスとポート番号を使って、異なるコンピュータ間で双方向通信を可能にします。TCPやUDPなど、様々なプロトコルでの通信に対応しています。

Socketの具体的な使い方

シンプルなTCPサーバーの例

require 'socket'

server = TCPServer.new(2000)
puts 'サーバーが起動しました。ポート2000で接続を待機中...'

loop do
  client = server.accept
  puts "クライアント#{client.peeraddr[2]}が接続しました。"
  
  client.puts 'こんにちは!サーバーへようこそ。'
  client.puts '現在の時刻は' + Time.now.strftime('%Y年%m月%d日 %H:%M:%S') + 'です。'
  
  client.close
  puts 'クライアントとの接続を閉じました。'
end

👇出力結果

サーバーが起動しました。ポート2000で接続を待機中...
クライアント127.0.0.1が接続しました。
クライアントとの接続を閉じました。

この例では、ポート2000でTCPサーバーを起動し、クライアントからの接続を待ち受けます。接続があると、現在の時刻を含むメッセージを送信し、接続を閉じます。サーバーは無限ループで動作し、複数のクライアントに対応できます。

シンプルなTCPクライアントの例

require 'socket'

begin
  puts 'サーバーに接続しています...'
  client = TCPSocket.new('localhost', 2000)
  puts 'サーバーに接続しました。'

  while line = client.gets
    puts "サーバーからのメッセージ: #{line.chomp}"
  end

rescue Errno::ECONNREFUSED
  puts 'サーバーに接続できませんでした。サーバーが起動しているか確認してください。'
ensure
  client.close if client
  puts 'サーバーとの接続を閉じました。'
end

👇出力結果

サーバーに接続しています...
サーバーに接続しました。
サーバーからのメッセージ: こんにちは!サーバーへようこそ。
サーバーからのメッセージ: 現在の時刻は2023年5月15日 10:30:45です。
サーバーとの接続を閉じました。

この例では、localhost上のポート2000に接続するTCPクライアントを作成します。サーバーからのメッセージを受信し、表示します。エラー処理も含まれており、サーバーに接続できない場合にはエラーメッセージを表示します。

Socketに関するよくある質問

Q. Socketとは何ですか?
A. Socketは、ネットワーク通信を行うための基本的なインターフェースです。IPアドレスとポート番号を使って、異なるコンピュータ間で双方向通信を可能にします。
Q. TCPとUDPの違いは何ですか?
A. TCPは信頼性の高い接続型プロトコルで、データの到達確認や順序保証があります。UDPは非接続型で、高速だが信頼性は低いです。用途に応じて選択します。
Q. Socketを使う際の注意点は?
A. ポート番号の重複を避け、適切にエラー処理を行い、セキュリティに注意する必要があります。また、リソースの解放(ソケットを閉じる)を忘れないようにしましょう。
Q. Socketの代わりに使えるものは?
A. 高レベルのネットワークライブラリ(例:Ruby's Net::HTTP)や、WebSocket、gRPCなどの代替技術があります。用途や要件に応じて選択してください。

Socketが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、RubyのSocketやDate、Net::HTTP、FileUtils、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

Date

日付を扱うクラス

種類: 日付と時刻

Net::HTTP

HTTPクライアントの機能を提供

種類: ネットワークプログラミング

FileUtils

ファイル操作のユーティリティ

種類: ファイルシステム操作

respond_to?

メソッドの存在確認

種類: メソッド

last

範囲の最後の要素を取得

種類: Range操作