Ich führe die server.php aus und starte client.php und diese Warnung wird auf dem Client angezeigt. PHP-Bildschirm nach mehreren versuchen, vom Client an den Server zu senden.PHP-Socket: Verbindung nicht möglich [10048]: Normalerweise ist nur eine Verwendung jeder Socket-Adresse (Protokoll/Netzwerkadresse/Port) zulässig
Warnung: socket_connect(): Verbindung nicht möglich [10048]: Normalerweise ist nur eine Verwendung jeder Socket-Adresse (Protokoll/Netzwerkadresse/Port) zulässig. in C: \ xampp \ htdocs \ client.php in Zeile 32 Socket Verbindung fehlgeschlagen!
Danach hörte xampp auf zu arbeiten.
Hier ist 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>
Hier mein client.php ist
<!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>
Sobald der Client mit dem Server verbunden ist, muss der Server wissen, wer der Client ist. Danach muss ich eine Nachricht an alle Clients senden, die mit dem Server verbunden sind. Bedeutet das, dass ich eine Verbindung zwischen Server und Client herstellen muss? – Emanon
Wenn Sie dies über einen Browser ausführen möchten, könnten Sie etwas wie WebSockets (https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) betrachten, das eine Verbindung zwischen aktivem Javascript-Code aufrechterhält auf dem Browser und dem Server. Sonst könnte man mit langem Polling schauen (siehe http://stackoverflow.com/questions/333664/how-do-i-implement-basic-long-polling). – msbit
Ich hatte versucht mit Port größer als 65530 und es funktioniert für das Senden an den Server. Jetzt muss ich dem Server eine Antwort an alle Clients senden lassen, die mit dem Server verbunden sind. Gibt es dafür eine Lösung? Es wird sehr hilfreich sein, wenn es welche gibt. Übrigens, vielen Dank. =) – Emanon