ソケットはプロセス間通信に使用されます。プロセス間通信は通常、クライアント/サーバー モデルに基づいています。この時点で、クライアントとサーバーは相互に対話できるアプリケーションです。クライアントとサーバー間の対話には接続が必要です。ソケット プログラミングは、アプリケーション間の対話型接続を確立する役割を果たします。
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 selectionsocket_send()からのメッセージを受信します。指定されたアドレスソケット socket_set_block() ソケットをブロックモードに設定します socket_set_nonblock() ソケットをノンブロックモードに設定します socket_set_option() ソケットオプションを設定します socket_shutdown() この関数を使用すると、読み取り、書き込みを閉じることができます、またはsocketを指定すると、socket_strerror()は、指定されたエラー番号を持つ詳細なエラーを返します socket_write()は、ソケットキャッシュにデータを書き込みます socket_writev()は、分散/集約配列にデータを書き込みます 著作権ステートメント: これ記事はブロガーによるオリジナル記事であり、まだ公開されていません。ブロガーの許可なしに転載することは許可されません。