首页 > 代码库 > php socket通信机制实例说明与代码

php socket通信机制实例说明与代码

 php socket通信机制实例说明与代码----什么是socket 所谓socket一般也称作"套接字",用于描述ip地址和端口,是一个通讯链的句柄。使用程序一般经过"套接字"向network发出请求也许应对network请求。说白了就是一种通讯机制。它类似于银行,电信啊这一些部分的电话客服业务单元。您打电话的时候,那边会调设置一个人回答您的问题,客服业务单元就相当于socket的服务器端了,您这边呢就相当于用户端了,在和您通话完结前,假设有人在想找和您通话的那个谈话是不可能的,由于您在和他通讯,当然客服业务单元的电话更换机也不会重复调配。


  下面我将举例子来说明一下,socket是怎样工作的。假设您是基于使用层开发的人员并不一定要理解原理,然而能晓得那是更好了。网络有对于socket的php api。下下来用就行了。


  socket服务器server.php // 构建server端socket


  $tcp = getprotobyname("tcp");


  $socket = socket_create(af_inet, sock_stream, $tcp);


  socket_bind($socket, ‘127.0.0.1‘, 10008); //绑定要监听的端口


  socket_listen($socket); //监听端口


  //初始化一个DATA,和用户端通讯


  $buffer = "connect";


  while (true) { // 接受一个socket联接


  $connection = socket_accept($socket);


  if(!$connection){


  echo "connect fail";


  }else{


  echo "socket connectedn"; // 向用户端传送一个信息DATA


  if ($buffer != "") {


  echo "send data to clientn";


  socket_write($connection, $buffer . "n");


  echo "wrote to socketn";


  } else {


  echo "no data in the buffern" ;


  } // 从用户端获得信息


  while ($data = http://www.mamicode.com/@socket_read($connection, 1024, php_normal_read)) {


  printf("buffer: " . $data . "n"); //获得信息给用户端一个反响


  socket_write($connection, "information receivedn");


  }


  }


  socket_close($connection); //封锁 socket


  printf("closed the socketn");


  }


  ?>


  另外注意,socket用户端client.php


  // 构建用户端的socet联接


  $socket = socket_create(af_inet, sock_stream, sol_tcp);


  $connection = socket_connect($socket, ‘127.0.0.1‘, 10008); //联接服务器端socket


  while ($buffer = @socket_read($socket, 1024, php_normal_read)) { //服务端告诉用户端,自身的形态


  if (preg_match("/not connect/",$buffer)) {


  echo "don`t connectn";


  break;


  } else { //服务器传来信息


  echo "buffer data: " . $buffer . "n";


php socket通信机制实例说明与代码