Working with TCP Sockets 読書メモ 第14章 緊急データ

Working with TCP Sockets 読書メモ 目次

緊急データ

  • TCPではデータの送信は順番に行われる
  • 緊急データ(Out of bandデータ)は順番を無視して最優先で送信できる
  • Socket#sendSocket#writeの特別版
  • Socket#sendの第2引数にフラグを渡すことで挙動を制御できる

緊急データの送信

  • 緊急データの送信には、sendメソッドの呼び出し時にSocket::MSG_OOBを渡す
  • 緊急データの送受信には、クライアントだけでなくサーバの対応も必要

緊急データの受信

  • 緊急データの受信にはSocket#recvSocket::MSG_OOBフラグ付きで使う必要がある
  • 通常のデータが先に送信された場合でも、緊急データを先に受け取ることができる

制限

  • TCPの緊急データは、一度に1バイトしか送れない

緊急データとIO.select

  • IO.selectは、緊急データに対しては正しく動作しないことが多い
  • 上記の制限と難点があるため、緊急データ送信機能はほとんど使われない

SO_OOBINLINEオプション

  • 通常のデータのストリームの中に緊急データを埋め込むこともできる
  • SO_OOBINLINEオプションを使用する
  • このオプションは受信側でのみ使用可能

コメントを残す