ソケットとは?

辞典・百科事典の検索サービス - Weblio辞書

初めての方へ

参加元一覧


用語解説|ニュース|動画|文献|商品|全文検索|用例
Weblio 辞書 > コンピュータ > ネットワーク用語 > ソケットの意味・解説 

三省堂 大辞林

三省堂三省堂

ソケット 2 1 [socket]

(1)電球や、真空管などの電子管を、ねじ込んだり差し込んだりして、電気を導くための器具

(2)ゴルフ-クラブクラブ-ヘッドシャフトとつながる部分。また、そこへ球があたるミス-ショット



ネットワーク用語集

アライドテレシス株式会社アライドテレシス株式会社

ソケット

TCP/IPネットワーク内のトランスポート層上でプロセス間通信によるデータ送受信を行うアプリケーション作成するための、アプリケーションプログラミングインターフェース。Windows環境では、Winsockというソケット規格が有名。

関連用語:



PHP関数リファレンス

PHP Documentation GroupPHP Documentation Group

ソケット関数

導入

ソケット拡張モジュールは、一般的な BSD ソケットに基づくソケット通信に関する低レベルインターフェースを実装し、 クライアントだけでなく、 ソケットサーバとして動作させることが可能となります。
より一般的なクライアントサイドのソケットインターフェースについては、 stream_socket_client()stream_socket_server()fsockopen() および pfsockopen() を参照ください。
ここで説明するソケット関数を使用する場合、多くの関数は C 言語に同じ名前の関数が存在しますが、 しばしば定義が異なっていることに注意してください。 混乱を避けるには、説明をよく読んでください。
このようにソケットプログラミングと異なっている点はありますが、 それでも有用な多くの Unix man ページを参照することができます。 Web 上に C 言語のソケットプログラミングのチュートリアル情報が存在し、 その多くは、若干の修正により、 PHP におけるソケットプログラミングに適用することが可能です。 » Unix Socket FAQ が、 手始めとして適しているでしょう。
注意: この拡張モジュールは » PECL レポジトリに移動 されており、以下のバージョン以降 PHP にバンドルされなくなっています。 PHP 5.3.0.

要件

外部ライブラリを必要としません。

インストール手順

ここに既述されたソケット関数は PHP 拡張モジュールの一部であり、 コンパイル時に configure にオプション --enable-sockets を指定することにより 使用可能となります。
注意: IPv6 サポートは PHP 5.0.0 で追加されました。

実行時設定

設定ディレクティブは定義されていません。

リソース型

リソース型は定義されていません。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
AF_UNIX (integer)
AF_INET (integer)
AF_INET6 (integer)
SOCK_STREAM (integer)
SOCK_DGRAM (integer)
SOCK_RAW (integer)
SOCK_SEQPACKET (integer)
SOCK_RDM (integer)
MSG_OOB (integer)
MSG_WAITALL (integer)
MSG_PEEK (integer)
MSG_DONTROUTE (integer)
SO_DEBUG (integer)
SO_REUSEADDR (integer)
SO_KEEPALIVE (integer)
SO_DONTROUTE (integer)
SO_LINGER (integer)
SO_BROADCAST (integer)
SO_OOBINLINE (integer)
SO_SNDBUF (integer)
SO_RCVBUF (integer)
SO_SNDLOWAT (integer)
SO_RCVLOWAT (integer)
SO_SNDTIMEO (integer)
SO_RCVTIMEO (integer)
SO_TYPE (integer)
SO_ERROR (integer)
SOL_SOCKET (integer)
PHP_NORMAL_READ (integer)
PHP_BINARY_READ (integer)
SOL_TCP (integer)
SOL_UDP (integer)

ソケットのエラー

ソケット拡張モジュールは、 強力な BSD ソケットへの有用なインターフェースを提供するために作成されました。 関数は、Win32 および Unix の実装において等しく動作するように注意が払われています。 ソケット関数の多くは特定の条件で失敗し、エラーを記述する E_WARNING メッセージを出力します。 これは、時々開発者が望まない時に発生することがあります。例えば、 関数 socket_read() は突然 E_WARNING メッセージを出力する可能性があります。 これは、予測しない接続断が発生したためです。 @ 演算子により警告出力を抑制し、 socket_last_error() 関数によりアプリケーション内でエラーコードを取得することが一般に行われています。 エラーを記述する文字列を取得するためにこのエラーコードを指定して socket_strerror() 関数をコールすることが可能です。 詳細は、この関数の説明を参照してください。
注意: E_WARNING メッセージは、 ソケット拡張モジュールにより英語で生成されますが、取得されるエラーメッセージは、 現在のロケール (LC_MESSAGES) に依存します。 Warning - socket_bind() unable to bind address [98]: Die Adresse wird bereits verwendet

例 2147. ソケットの例: 簡易 TCP/IP サーバ
この例は、簡単な応答サーバです。変数 addressport を設定と実行環境に合うように変更してください。 このサーバに次のようなコマンドで接続することが可能です。 : telnet 192.168.1.53 10000 (ただし、 アドレスとポートは設定に合わせます)入力したものは、サーバ側の出力となり、 エコーバックされます。接続を閉じるには、'quit' を入力します。
#!/usr/local/bin/php -q
<?php
error_reporting(E_ALL);

/* Allow the script to hang around waiting for connections. */
set_time_limit(0);

/* Turn on implicit output flushing so we see what we're getting
 * as it comes in. */
ob_implicit_flush();

$address = '192.168.1.53';
$port = 10000;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
   echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}

if (socket_bind($sock, $address, $port) === false) {
   echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}

if (socket_listen($sock, 5) === false) {
   echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}

do {
   if (($msgsock = socket_accept($sock)) === false {
       echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
       break;
   }
   /* Send instructions. */
   $msg = "\nWelcome to the PHP Test Server. \n" .
       "To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
   socket_write($msgsock, $msg, strlen($msg));

   do {
       if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
           echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($msgsock)) . "\n";
           break 2;
       }
       if (!$buf = trim($buf)) {
           continue;
       }
       if ($buf == 'quit') {
           break;
       }
       if ($buf == 'shutdown') {
           socket_close($msgsock);
           break 2;
       }
       $talkback = "PHP: You said '$buf'.\n";
       socket_write($msgsock, $talkback, strlen($talkback));
       echo "$buf\n";
   } while (true);
   socket_close($msgsock);
} while (true);

socket_close($sock);
?>


例 2148. ソケットの例: 簡易 TCP/IP クライアント
この例は、簡単な一回限りの HTTP クライアントです。ここでは、 あるページに接続して HEAD リクエストを送信し、応答を出力た後で終了します。
<?php
error_reporting(E_ALL);

echo "<h2>TCP/IP Connection</h2>\n";

/* Get the port for the WWW service. */
$service_port = getservbyname('www', 'tcp');

/* Get the IP address for the target host. */
$address = gethostbyname('www.example.com');

/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
   echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
   echo "OK.\n";
}

echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
   echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
   echo "OK.\n";
}

$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";

echo "Reading response:\n\n";
while ($out = socket_read($socket, 2048)) {
   echo $out;
}

echo "Closing socket...";
socket_close($socket);
echo "OK.\n\n";
?>


目次

socket_accept — ソケットへの接続を許可する
socket_bind — ソケットに名前をバインドする
socket_clear_error — ソケットのエラーまたは直近のエラーコードをクリアする
socket_close — ソケット記述子を閉じる
socket_connect — ソケット上の接続を初期化する
socket_create_listen — 接続を受けつけるためにポートにソケットをオープンする
socket_create_pair — 区別できないソケットの組を作成し、配列に保存する
socket_create — ソケット(通信時の終端)を作成する
socket_get_option — ソケットのオプションを取得する
socket_getpeername — 指定したソケットのリモート側に問い合わせ、その型に応じて ホスト/ポート、あるいは Unix ファイルシステムのパスを返す
socket_getsockname — 指定したソケットのローカル側に問い合わせ、その型に応じて ホスト/ポート、あるいは Unix ファイルシステムのパスを返す
socket_last_error — ソケットの直近のエラーを返す
socket_listen — ソケット上で接続待ち(listen)する
socket_read — ソケットから最大バイト長まで読みこむ
socket_recv — 接続したソケットからデータを受信する
socket_recvfrom — 接続しているかどうかによらず、ソケットからデータを受信する
socket_select — 与えられたソケットの配列に対し、指定した有効時間で select() システムコールを実行する
socket_send — 接続したソケットにデータを送信する
socket_sendto — 接続しているかどうかによらずソケットにメッセージを送信する
socket_set_block — ソケット記述子をブロックモードに設定する
socket_set_nonblock — ソケット記述子を非ブロックモードに設定する
socket_set_option — ソケットのオプションを設定する
socket_shutdown — 受信、送信、または送受信用のソケットをシャットダウンする
socket_strerror — ソケットエラーの内容を文字列として返す
socket_write — ソケットに書き込む


実用空調関連用語

ダイキン工業ダイキン工業

ソケット socket

管継ぎ手一種鋳鉄管、大型鋼管などの接続に用いる。


照明大辞典

大光電機大光電機

ウィキペディア

ウィキペディアウィキペディア

ソケット

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2010/12/19 03:59 UTC 版)

ソケット






ソケットに関係した商品



ソケットのページへのリンク

[PR] おすすめ情報

「ソケット」の関連用語
ソケットのお隣キーワード
モバイル
モバイル版のWeblioは、下記のURLからアクセスしてください。
http://m.weblio.jp/
» モバイルで「ソケット」を見る
_ _   


ソケットのページの著作権
Weblio 辞書情報提供元は参加元一覧にて確認できます。

  
三省堂三省堂
Copyright (C) 2001-2012 Sanseido Co.,Ltd. All rights reserved.
株式会社 三省堂三省堂 Web Dictionary
アライドテレシス株式会社アライドテレシス株式会社
Copyright(c)2012 Allied Telesis K.K. All Rights Reserved.
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2012 by the PHP Documentation Group.
ダイキン工業ダイキン工業
Copyright (C) 2012 DAIKIN INDUSTRIES, ltd. All Rights Reserved.
大光電機大光電機
Copylight 2012.DAIKO ELECTRIC CO.,LTD.All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのソケット (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2012 Weblio RSS