ホームページ  >  記事  >  バックエンド開発  >  PHPソケット通信プログラミング

PHPソケット通信プログラミング

WBOY
WBOYオリジナル
2016-06-23 13:29:31849ブラウズ

ソケットはプロセス間通信に使用されます。プロセス間通信は通常、クライアント/サーバー モデルに基づいています。この時点で、クライアントとサーバーは相互に対話できるアプリケーションです。クライアントとサーバー間の対話には接続が必要です。ソケット プログラミングは、アプリケーション間の対話型接続を確立する役割を果たします。

PHP を使用して単純なクライアントを作成しますか? サーバーに文字列メッセージを送信するクライアントを開発します。サーバーは同じ情報をクライアントに返します。

サーバー側

リストコンテンツ設定のホストとポート ポート番号には、1024 から 65535 までの任意の正の整数を指定できます。

$host = "127.0.0.1";$port=5353;set_time_limit(0);//设置程序的执行时间  当为0的时候永久执行直到程序结束,如果为大于零的数字,则不管程序是否执行完成,到了设定的秒数,程序结束。

ソケットの作成

$socket = socket_create(AF_INET,SOCK_STREAM,0) or die("could not create socket\n");

作成されたソケットリソースは、IP アドレスとポート番号にバインドされます。

$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");

ソケットリスニングを開始

IP とポートにバインドした後、サーバーはクライアントの接続の待機を開始します。接続がなくなるまで待機します。

$result = socket_listen($socket,3) or die("Could not set up socket listener\n");

Accept connection

この関数は、作成されたソケットからの受信接続リクエストを受け入れます。クライアント ソケットからの接続を受け入れた後、この関数は別のソケット リソースを返します。このリソースは実際には、対応するクライアント ソケットとの通信を担当します。ここでの「$spawn」は、クライアント ソケットとの通信を担当するソケット リソースです。

$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");

クライアントソケットからメッセージを読み取る

$input = socket_read($spawn,1024) or die("Could not read input\n");

メッセージを反転

$output = strrev($input)."\n";

クライアントソケットにメッセージを送信

socket_write($spawn,$output,strlen(($output))) or die("Could not write output\n");

ソケットを閉じる

socket_close($spawn);socket_close($socket);

クライアント

ホストとポートをセットアップする

注: ここでのポートとホストは、サーバーで定義されているものと同じである必要があります。

$host = "127.0.0.1";$port=5353;set_time_limit(0);

送信する情報

$message = "xiongchao";echo "Message To server :".$message."\n";

ソケットの作成

$socket = socket_create(AF_INET,SOCK_STREAM,0) or die("could not create socket\n");

サーバーに接続

この時のサーバーとは異なり、クライアントのソケットはポートやホストにバインドされません。代わりに、サーバー ソケットに接続し、クライアント ソケットからの接続を受け入れるのを待ちます。
このステップでは、クライアント ソケットからサーバー ソケットへの接続を確立します。

$result = socket_connect($socket,$host,$port) or die("Could not connect to server\n");

サーバーソケットに書き込む

このステップでは、クライアントソケットのデータがサーバーソケットに送信されます。 +

ポートが監視されていることがわかります

クライアントを実行します

サーバーが正常に実行され、ポートが監視されたら、この時点でクライアントを実行します

情報はサーバーに正常に送信され、サーバーから返された信頼性を受信します

ソケット関連関数

  • socket_accept()はソケット接続を受け入れます
  • socket_bind()はソケットをIPアドレスとポートにバインドします
  • socket_clear_error()はソケットエラーまたは最後のエラーコードをクリアします
  • socket_close() ソケットを閉じますresource
  • socket_connect() ソケット接続を開始します
  • socket_create_listen() 指定されたポートでリッスンするソケットを開きます
  • socket_create_pair() 未分化ソケットのペアを配列に生成します
  • socket_create() ソケットを生成します。ソケットデータ構造体
  • socket_get_option() ソケットオプションを取得します
  • socket_getpeername() リモートの同様のホストの IP アドレスを取得します
  • socket_getsockname() ローカルソケットの IP アドレスを取得します
  • socket_iovec_add() 新しいベクトルを A に追加します分散/集約配列
  • Socket_iovec_alloc () この関数は、読み取りおよび書き込みを受信するために送信できる IOVEC データ構造を作成します
  • Socket_iovec_delete () Iovec
  • を削除します
  • Socket_ifetch () 指定された iovec リソース データに戻ります
  • Socket_iovec_free () iovec リソースを解放します
  • socket_iovec_set() iovec データの新しい値を設定します
  • socket_last_error() 現在のソケットの最後のエラー コードを取得します
  • socket_listen() 指定されたソケットからのすべての接続をリッスンします
  • socket_read()指定された長さのデータ
  • socket_readv() 分散/集約配列からデータを読み取ります
  • socket_recv() ソケットからキャッシュへのデータを終了します
  • socket_recvfrom() は指定されたソケットからデータを受け取ります。指定されていない場合は、デフォルトで現在のソケット
  • ソケットsocket_recvmsg()は、iovec
  • socket_select()Multise selection
  • socket_send()からのメッセージを受信します。指定されたアドレスソケット
  • socket_set_block() ソケットをブロックモードに設定します
  • socket_set_nonblock() ソケットをノンブロックモードに設定します
  • socket_set_option() ソケットオプションを設定します
  • socket_shutdown() この関数を使用すると、読み取り、書き込みを閉じることができます、またはsocket
  • を指定すると、
  • socket_strerror()は、指定されたエラー番号を持つ詳細なエラーを返します
  • socket_write()は、ソケットキャッシュにデータを書き込みます
  • socket_writev()は、分散/集約配列にデータを書き込みます
  • 著作権ステートメント: これ記事はブロガーによるオリジナル記事であり、まだ公開されていません。ブロガーの許可なしに転載することは許可されません。
  • 声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。