• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-24) 34次浏览 已收录 0个评论

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

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

——解决方案——————–
用非阻塞模式,具体百度


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:socket 同时只能有一个客户端连接一个端口并往上面发送数据
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址