Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php套接字和while_Php_Sockets - Fatal编程技术网

Php套接字和while

Php套接字和while,php,sockets,Php,Sockets,我正在学习并试图理解php中的socket,但我对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";

我正在学习并试图理解php中的socket,但我对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";
 ?>

我觉得你走错了一点

您编写了两个小php脚本,其中服务器端不仅是运行在Web服务器上的脚本,而且已经是服务器了。而你的客户端就像一个浏览器(只是有点基本)。 因此,直截了当地说,您编写了一个聊天应用程序和一个聊天服务器,而不是一个网站

这意味着您应该将这两个脚本作为控制台脚本运行。 在Linux上有“php”命令。在Windows上阅读此内容

如果您只想进行简单的聊天,请使用以下方法:

<!-- html stuff -->
<pre>
<?php
//chat.php

// Safe message on server using file
if(isset($_GET['msg'])){
    // be carefull it's not clever to let the world write
    // to your server even if it's a textfile
    $f = fopen("db.txt","a+");
    fputs($f, $_GET['msg']);
    fclose($f);
}

// print all messages
readfile("db.txt");

?>
</pre>
<form>
 <textarea name="msg"></textarea>
 <input type="submit"/>
</form>

要获得更多类似聊天的感觉,意味着不需要重新加载页面,您需要Javascript和AJAX请求。看这里


问题是,我自己发现和使用的聊天室的所有好教程通常也使用mysql数据库。

你只听同一台机器吗?我不明白。这两个PHP都在服务器端,因为它是PHP。没有客户端PHPShivan->是的,我听相同的机器只是为了学习Christian Mark->是的,它是正确的!但我指的是html/php端,而不是客户端,而不是命令行。