- 相干保举
phpSocket 编程的历程
导语:Socket用于历程间通讯。历程间通讯凡是基于客户端—办事端模子。此时,客户端—办事端是能够相互交互的利用法式。客户端和办事端之间的交互须要毗连。Socket编程担任的便是为利用法式之间成立可停止交互的毗连。上面是phpSocket 编程的历程,一路来进修下吧:
利用代码
方针:开辟一个客户端用于发送string动静到办事端,办事端将不异的信息反转后前往给客户端。
PHP办事器
第1步:设置变量,如“主机”和“端口”
$host = "127.0.0.1";$port = 5353;// No Timeout set_time_limit(0);
端口号能够是1024 -65535之间的任何正整数。
第2步:成立socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
第3步:绑定socket到端口和主机
成立的socket资本绑定到IP地点和端口号。
$result = socket_bind($socket, $host, $port) or die("Could not bind to socketn");
第4步:启动socket监听
在绑定到IP和端口后,办事端起头期待客户真个毗连。在不毗连之前它就一向等下去。
$result = socket_listen($socket, 3) or die("Could not set up socket listenern");
第5步:接管毗连
这个函数会接管所建的socket传入的毗连要求。在接管来自客户端socket的毗连后,该函数前往另外一个socket资本,现实上便是担任与呼应的客户端socket通讯。这里的“$spawn”便是担任与客户端socket通讯的socket资本。
$spawn = socket_accept($socket) or die("Could not accept incoming connectionn");
到此刻为止,咱们已筹办好了办事端socket ,但现实上这个剧本并不做任何工作。以是为了持续实现上述方针,咱们将读取客户端socket动静,而后将领受到的动静反转后发回给客户端socket。
第6步:从客户端socket读取动静
$input = socket_read($spawn, 1024) or die("Could not read inputn");
第7步:反转动静
$output = strrev($input) . "n";
第8步:发送动静给客户端socket
socket_write($spawn, $output, strlen ($output)) or die("Could not write outputn");
封闭socket
socket_close($spawn);socket_close($socket);
这就实现了办事端。此刻,咱们进修若何成立PHP客户端。
PHP客户端
前两个步骤与办事端不异。
第1步:设置变量,如“主机”和“端口”
$host = "127.0.0.1";$port = 5353;// No Timeout set_time_limit(0);
注:这里的端口和主机应当和办事端中的界说是不异的。
第2步:成立socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
第3步:毗连到办事端
$result = socket_connect($socket, $host, $port) or die("Could not connect toservern");
此时和办事端差别,客户端socket不绑定端口和主机。相反,它毗连到办事端socket,期待接管来自客户端socket的毗连。这一步成立了客户端socket到办事端socket的毗连。
第4步:写入办事端socket
socket_write($socket, $message, strlen($message)) or die("Could not send data to servern");
在此步骤中,客户端socket的数据被发送到办事端socket。
第5步:阅读来自办事真个呼应
$result = socket_read ($socket, 1024) or die("Could not read server responsen");echo "Reply From Server :".$result;
第6步:封闭socket
socket_close($socket);
完全的代码
办事端(server.php)
// set some variables$host = "127.0.0.1";$port = 25003;// don't timeout!set_time_limit(0);// create socket$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");// bind socket to port$result = socket_bind($socket, $host, $port) or die("Could not bind to socketn");// start listening for connections$result = socket_listen($socket, 3) or die("Could not set up socket listenern");// accept incoming connections// spawn another socket to handle communication$spawn = socket_accept($socket) or die("Could not accept incoming connectionn");// read client input$input = socket_read($spawn, 1024) or die("Could not read inputn");// 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 outputn");// close socketssocket_close($spawn);socket_close($socket);
客户端(client.php)
$host = "127.0.0.1";$port = 25003;$message = "Hello Server";echo "Message To server :".$message;// create socket$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");// connect to server$result = socket_connect($socket, $host, $port) or die("Could not connect to servern"); // send string to serversocket_write($socket, $message, strlen($message)) or die("Could not send data to servern");// get server response$result = socket_read ($socket, 1024) or die("Could not read server responsen");echo "Reply From Server :".$result;// close socketsocket_close($socket);
成立上述文件(server.php和client.php)后,履行以下操纵:
复制www目次中的这些文件(假定WAMP),安顿于C:wamp。
翻开Web阅读器,在地点栏中键入localhost 。
先阅读server.php而后client.php。
【phpSocket 编程的历程】相干文章:
PHPsocket函数讲授08-28
java编程根本07-26
Java说话的编程特色03-18
扼要的 Python 编程标准09-28
领会甚么是编程说话10-28
C说话编程根本08-17
Java编程进修示例07-31
java面向接口编程08-01
java并发编程参考10-30
java编程标准先容07-10