2016-05-18 20 views
-1

私はすでにソケットのチュートリアルを行ってきましたが、それは何を得ることができませんでした。私はソケットが何をしているのか、なぜそれが使われているのかを知りたい。これは私が参照したコードです。PHPのソケットとは何ですか?そして、どのような状態で私はソケット接続のために行く必要がありますか?

client.php 
<?php 
$host = "localhost"; 
$port = 1024; 
$message = "Hello Server"; 
echo "Message To server :".$message; 
// create socket 
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create    socket\n"); 
// connect to server 
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n"); 
// send string to server 
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n"); 
// get server response 
$result = socket_read ($socket, 1024) or die("Could not read server response\n"); 
echo "Reply From Server :".$result; 
// close socket 
socket_close($socket); 
?> 

server.php 
<?php 
// set some variables 
$host = "localhost"; 
$port = 1024; 
// don't timeout! 
set_time_limit(0); 
// create socket 
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n"); 
// bind socket to port 
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n"); 
// start listening for connections 
$result = socket_listen($socket, 3) or die("Could not set up socket listener\n"); 

// accept incoming connections 
// spawn another socket to handle communication 
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n"); 
// read client input 
$input = socket_read($spawn, 1024) or die("Could not read input\n"); 
// clean up input string 
$input = trim($input); 
echo "Client Message : ".$input; 
// reverse client input and send back 
$output = strrev($input) . "\n"; 
socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n"); 
// close sockets 
socket_close($spawn); 
socket_close($socket); 
?> 

ここで、サーバーコードとクライアントコードを入力する場所がわかりませんでした。通常、私たちはユーザ入力を取得しながらサーバコードを書いています。私はこれについて非常に混乱しています。誰でも助けてくれますか?事前に感謝します

+1

私はそれがありますので、オフトピックとして、この質問を閉じるために投票しています。 –

+0

それがある場合は、それがどこにあるかお勧めできますか?それは大きな助けになるでしょう。 – Sam

+0

ありがとう@RyanVincent 2台のコンピュータがどのように通信するかを知るにはとても便利な記事です。しかし、彼らはソケットについて何も言わなかった。だから私を助けることができますか?あるいは、ソケットについて知っておくべきあらゆる記事と実装方法を教えてください。私は既にそこにチャットアプリケーションを開発しました。メッセージをあるユーザからデータベースに保存し、それを他のユーザに表示します。ページはajaxを使ってリフレッシュされます。だから私はソケットプログラミングを介してチャットを実行するためにinorderをしなければならない。あなたはその流れを説明できますか? – Sam

答えて

0

ソケットプログラミングの概念を理解する必要があります。より良いアイデアを得る。

ソケットはプロセス間通信に使用されます。プロセス間通信 は、通常、クライアント - サーバーモデルに基づいています。この場合、 client-serverは相互にやり取りするアプリケーションです。 クライアントとサーバー間の相互作用には接続が必要です。ソケット プログラミングは、 アプリケーション間の接続を確立する責任があります。

クライアントアプリケーションは、メッセージ($メッセージ)をサーバー($ホスト)に送信し、サーバーアプリケーションはクライアントからポート($ポート)を介してメッセージを受信します。

client.phpが実行され、クライアントマシンからメッセージが送信されます。 server.phpは、メッセージを受信するサーバマシン上で動作します。

このリンクも試してみてください。この例もあり、サーバーとクライアントのファイルを実行する方法もあります。

http://www.binarytides.com/php-socket-programming-tutorial/
http://www.devshed.com/c/a/php/socket-programming-with-php/

+0

"client.phpは、クライアントマシンからメッセージを実行して送信します。server.phpは、メッセージを受信したサーバマシン上で実行されます。 phpはサーバサイドのスクリプト言語なので、サーバ側のスクリプトとクライアントコードはどこに書き込まれますか?ソケットを使用する必要はありますか?どのような状況でソケットプログラミングを使用する利点は何ですか?これらのことを説明できますか? – Sam

+0

phpはウェブプログラミングに関するサーバー側のスクリプト言語です。 PHPはソケットプログラミングのような汎用プログラミング言語として使用できます。 一般的な例は、ソケットプログラミングが使用されるチャットアプリケーションです。この場合のclient.phpは、チャットにログオンするユーザが使用し、server.phpは、あるユーザが送信したチャットメッセージを受信し、別のユーザに送信します。 ソケットは実質的にエンドポイントスルーで、接続確立後にメッセージが交換されます。 http://stackoverflow.com/questions/152457/what-is-the-difference-between-a-port-and-a-socket – zapping

+0

私はチャットアプリケーションでソケットプログラミングを実装する必要があります。そこでは、あるユーザーからデータベースに送信されたメッセージを保存し、それを他のユーザーに表示します。ページはajaxを使用してリフレッシュされます。だから私はソケットプログラミングを介してチャットを実行するためにinorderをしなければならない。あなたはその流れを説明できますか?どの時点でソケットをデータベースへのデータ保存時に実装するか、またはページをリフレッシュする必要がありますか? – Sam

関連する問題