【发布时间】:2017-04-23 08:24:20
【问题描述】:
我运行 server.php 然后运行 client.php,在几次尝试从客户端发送到服务器后,此警告显示在 client.php 屏幕上。
警告:socket_connect():无法连接 [10048]:每个套接字地址(协议/网络地址/端口)通常只允许使用一次。在 C:\xampp\htdocs\client.php 第 32 行 Socket 连接失败!
在那之后 xampp 停止工作。
这里是 server.php
<!DOCTYPE html>
<html>
<?php
error_reporting(0);
set_time_limit(0);
ob_implicit_flush();
$host = "127.0.0.1";
$port = 65535;
echo "Waiting for connections... \n";
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
$result = socket_listen($socket) or die("Could not set up socket listener\n");
while(1){
$spawn[++$i] = socket_accept($socket) or die("Could not accept incoming connection\n");
echo "\n";
$input = socket_read($spawn[$i],1024);
$client = $input;
echo $client ."\n";
socket_close($spawn[$i]);
echo "\n";
}
socket_close($socket);
?>
</html>
这是我的client.php
<!DOCTYPE html>
<html>
<body>
<form method="post" action="client.php">
<p><h4><label>Type Your Message Here:<input name = "message" size = "25" maxlength = "30" required></label></h4></p>
<input type="submit" name="sendmsg" class="btn btn-primary" value="send message"/>
</form>
<?php
$user="abc";
if(empty($_POST)){
}
elseif(isset($_POST['sendmsg'])) {
$message =$_POST["message"];
while(1){
if($message=='q') { exit; }
$socket= socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
if($socket===false)
{
echo "Socket creation failed!";
}
$result = socket_connect($socket,"127.0.0.1",65535);
if($result===false)
{
echo "Socket connection failed!";
}
else {
if($message !='0'){
socket_write($socket,"$user says --> $message",1024);
$message='0';
}
}
socket_close($socket);
}
}
?>
</body>
</html>
【问题讨论】: