Home  >  Article  >  Backend Development  >  socket 同时只能有一个客户端连接一个端口并往下面发送数据

socket 同时只能有一个客户端连接一个端口并往下面发送数据

WBOY
WBOYOriginal
2016-06-13 10:41:40852browse

求助 socket 同时只能有一个客户端连接一个端口并往上面发送数据
同时只能有一个客户端连接一个端口(如8090)并往上面发送数据,当有第二个客户端连接时这个8090端口时 就连接不上了
有的朋友说服务端就accept一次,那如何accept多次啊!下面贴上我的代码

PHP code
$commonProtocol = getprotobyname("tcp");$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);@socket_bind($socket, '192.168.1.202', 8888);@socket_listen($socket);// Initialize the buffer$buffer = "NO DATA";while(true){sleep(1);     // Accept any connections coming in on this socket $connection = @socket_accept($socket); printf("Socket connected\r\n"); // Check to see if there is anything in the buffer if($buffer != "") {  printf("Something is in the buffer...sending data...\r\n");  @socket_write($connection, $buffer . "\r\n");  printf("Wrote to socket\r\n"); } else {  printf("No Data in the buffer\r\n"); } // Get the input while($data = @socket_read($connection, 14, PHP_NORMAL_READ)) {          if (!empty($data)){         $buffer = $data;   //文件驱动模式       /*$f = fopen(dirname(__FILE__).'/file/'.date('YmdHis').'.txt','w');    fwrite($f,$buffer);     fclose($f); */     socket_set_nonblock($connection);   socket_getpeername($connection,&$remoteIP,&$remotePort);echo $remoteIP."\r\n";echo $remotePort."\r\n";    $data=str_split($buffer);  print_r($data);  foreach($data as $v){     echo dechex(ord($v))."\t";     } echo "\r\n";      }     } @socket_close($connection); printf("Closed the socket\r\n\r\n");  }


------解决方案--------------------
用非阻塞模式,具体百度
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn