上海龙凤419

php说话

phpSocket 编程的历程

时候:2024-06-17 14:54:05 php说话 我要投稿
  • 相干保举

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