【发布时间】:2013-10-03 02:25:08
【问题描述】:
我正在学习并尝试理解 php 中的套接字,但我在使用 while 循环时遇到了一点问题。
这是我的基本代码:
客户端
<?php
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$res = socket_connect($socket, '127.0.0.1', 2000);
$input = "Client to Server Message";
socket_write($socket, $input, strlen($input));
$res = socket_read($socket, 1024);
echo $res;
socket_close($socket);
?>
还有服务器端
<?php
set_time_limit(0);
$address = "127.0.0.1";
$port = 2000;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $address, $port) or die("Can't bind the socket");
socket_listen($socket);
echo "Server waiting connexion...";
$client = socket_accept($socket);
$input = socket_read($client, 1024);
echo "\nInput : ".$input;
$output = 'Server to Client Message';
socket_write($client, $output);
socket_close($client);
socket_close($socket);
echo "\nServer closed";
?>
它可以工作,但是如果我想在服务器端添加一个while循环来处理来自客户端的多条消息,我的浏览器会执行一个无限循环,我无法从服务器获取消息。
我必须怎么做才能让这个工作?
有人可以向我解释使用套接字仅使用 PHP 进行类似聊天的基本方法(我可以使用 socket.io 和 NodeJs 进行此操作)或发送给我一个很好的教程网络?
【问题讨论】:
-
你只听同一台机器?
-
我不明白。两个 PHP 都在服务器端,因为它是 PHP。没有客户端PHP
-
Shivan -> 是的,我听同样的机器只是为了学习
-
Christian Mark -> 是的,没错!但我的意思是 html/php 端而不是客户端,而不是命令行。