Java コースの設計とアドレス帳を準備しています。 C/Sアーキテクチャを採用。クライアントはJava FXとJavaを使用し、サーバーはphpを使用し、ソケット通信を使用します。
PHP ソケット通信について話しましょう:
話をする前に、まず TCP/IP と UDP について話さなければなりません。インターネットの普及に伴い、多かれ少なかれこれらのプロトコルについて聞いたことがある人は多いと思いますが、具体的にはどのようなものなのでしょうか?
1. TCP/IPとUDPとは何ですか?
TCP/IP (Transmission Control Protocol/Internet Protocol) は、広域ネットワーク ( WAN) 用に設計された業界標準プロトコル セットです。 TCP/IP プロトコル スイートには、トランスポート層、ネットワーク層、およびリンク層が含まれます。 UDP(User Data Protocol、User Datagram Protocol)は、TCPに対応するプロトコルです。これは、 TCP/IP プロトコル ファミリのメンバーです。
观 上で彼らの関係を直観的に示してみましょう:
ここにはコンセントがないのですが、コンセントはどこにありますか?使用は何ですか?心配しないでください。次にソケットとそれらの関係を紹介しましょう。上と同じ写真です。
これで二人の関係が分かりました。では、ソケットとは一体何でしょうか?使用は何ですか?
2. ソケットとは何ですか?用途は何ですか?
ソケットは、アプリケーション層とTCP/IPプロトコルファミリー間の通信のための中間ソフトウェア抽象化層であるインターフェースのセットです。設計モードでは、Socket は実際にはファサード モードであり、複雑な TCP/IP プロトコル ファミリを Socket インターフェイスの背後に隠し、ユーザーにとっては一連の単純なインターフェイスだけで、指定されたプロトコルを満たすように Socket がデータを編成できます。
ソケットはカプセル化されたインターフェイスのセットなので、通信にどのように使用すればよいでしょうか?具体的なプロセスは何ですか?電話のプロセスを詳しく説明します。まず第一に、私たちの通話は監視されなければなりませんね?そうでなければ、他の人から電話を受けることは絶対にありません。誰かが電話をかけてきたら、最初にその番号をダイヤルします。その番号がターゲットであり、唯一の番号です。ダイヤル後、電話が接続され、チャットが終了したら電話を切って、他の人がその番号に再度電話をかける必要があります。ソケットについても同様です。クライアントがソケットを作成して接続要求を開始すると、サーバーはまずソケットを確立し、情報の送信を開始します。送信が完了したらソケットを閉じます。もちろん、サーバーはクライアントへの接続要求をアクティブに開始して、通信を開始することもできます。これは、双方向通信を可能にする ajax とは異なります。下の写真をご覧ください:
サーバー側から始めましょう。サーバーはまずソケットを初期化し、次にポートにバインドし、ポートをリッスンし、accept を呼び出してブロックし、クライアントが接続するのを待ちます。このとき、クライアントがSocketを初期化してからサーバーに接続(connect)すると、接続に成功するとクライアントとサーバー間の接続が確立されます。クライアントがデータリクエストを送信し、サーバーがリクエストを受信して処理し、次に応答データをクライアントに送信し、クライアントがデータを読み取り、最後に接続を閉じてインタラクションが終了します
3. ソケット関連の機能: socket_accept() はソケット接続を受け入れます
4. ソケット通信のデモ:
リーリー
リーリー
注: 1) サーバーは CLI モード、つまりコマンドラインモードで実行する必要があります。 CGI (ブラウザ アクセス) を使用しないでください。php.exe が存在するディレクトリを見つけて、次のコード (php サーバー ファイル) を実行します。
2) 実行後、別の dos ウィンドウを開いて netstat -ano を実行して、ポートの占有状況を確認できます。
リーリー
リーリー
リーリー
socket_bind() はソケットを IP アドレスとポートにバインドします
socket_clear_error() はソケットエラーまたは最後のエラーコードをクリアします
socket_close() はソケットリソースを閉じます
socket_connect() は 1 つのソケット接続を開始します
socket_create_listen() は、指定されたポートでリッスンするソケットを開きます
socket_create_pair() は、未分化のソケットのペアを配列に生成します
socket_create() は、ソケットを生成します。これは、ソケットのデータ構造を生成するのと同等です
socket_get_option() は、ソケットのオプションを取得します
socket_getpeername() リモートの同様のホストの IP アドレスを取得します
socket_getsockname() ローカル ソケットの IP アドレスを取得します
socket_iovec_add() 新しいベクトルを分散/集約配列に追加します
socket_iovec_alloc() この関数は、送信、受信、およびread iovec データ構造を書き込む
socket_iovec_delete() 割り当てられた iovec を削除する
socket_iovec_fetch() 指定された iovec リソースのデータを返す
socket_iovec_free() iovec リソースを解放する
socket_iovec_set() iovec データの新しい値を設定する
socket_last_error () を入手してくださいcurrent ソケットの最後のエラー コードです
socket_listen() は、指定されたソケットからのすべての接続をリッスンします
socket_read() は、指定された長さのデータを読み取ります
socket_readv() は、分散/集約配列からデータを読み取ります
socket_recv() は、ソケットからキャッシュへのデータ
socket_recvfrom() 指定されたソケットからのデータを受け取ります。指定されていない場合、現在のソケットがデフォルトになります
socket_recvmsg() iovec からメッセージを受信します
socket_select() 複数選択
socket_send() この関数はデータを次の宛先に送信します接続されたソケット
socket_sendmsg () ソケットにメッセージを送信します
socket_sendto() 指定されたアドレスのソケットにメッセージを送信します
socket_set_block() ソケットをブロックモードに設定します
socket_set_nonblock() ソケットを非ブロックモードに設定します
socket_set_option() ソケット オプションを設定します
socket_shutdown() この関数を使用すると、読み取り、書き込み、または指定されたソケットを閉じることができます
socket_strerror() 指定されたエラー番号を持つ詳細なエラーを返します
socket_write() ソケット キャッシュにデータを書き込みます
http://www.bkjia.com/PHPjc/1125072.html