Ruby/Rubyの基礎知識

Rubyによるネットワーク通信の基礎

Rubyを使ってソケットを介したネットワーキング処理を行う方法を紹介します

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

今回の記事では、Rubyを使った基礎的なネットワーク通信について解説します。

TCPによる通信

インターネット上で行われる通信のほとんどはTCPというプロトコル (お互いこの方法でやりとりしましょう, という取り決め) のもと行われています。ウェブページを閲覧する際使われるHTTPも、サーバにログインする際使われるSSHも、TCPの上に実装されているプロトコルです。

TCPには通信の信頼性を上げるための仕組みが組み込まれています。たとえば通信中にデータが失われたり連続して送ったデータが受け取り側で順番が狂ってしまったり、といった事態が発生する可能性があります。そういった時に適切な順序に並び替えたり「失敗したからさっきのもう一回送って」とリクエストしてくれるのがTCPプロトコルです。

RubyからTCP通信を行う基板となるクラスはTCPSocketです。TCPSocketを継承したTCPServerクラスが用意されているので、これを使ってまずはTCP通信を受け取るサーバを作ってみましょう。

TCPサーバ

2000番ポートでTCPServerを作成した後、loopを開始してTCPServer#acceptメソッドで接続を待ちます。相手が接続して来たら、TCPServer#acceptは相手のsocketを返します。あとはそのsocketからデータが送られてくるのを待ち(IO#gets)、送られてきたデータに「:D」を付けてそのまま返すプログラムです。

このサーバに対してtelnetで接続して対話してみます。

「hoge」はtelnet側から入力した文字列、その下の「hoge :D」がサーバから帰ってきた文字列です。想定通り動いていることがわかります。

telnetコマンドを使っても十分役割は果たせるのですが、せっかくなので次のページではクライアント側もRubyで作成してみましょう。

  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます