Hallo,
ich habe mir mithilfe der socket beispiele mit php im internet folgendes socket-script gebastelt:
das sollte es können:
der php-client erstellt einen socket und öffnet den port.
sobald ein server erreichbar ist, auf eingang warten. eine halbe sekunde warten, ob der server sendet. sonst sende ich selbst an den server...
dann antwortet der server wieder...
währenddessen soll der client immer auf empfang bleiben, falls der server etwas sendet...
ich habe es bereits mit zahlreichen schleifen probiert, komme aber auf keinen grünen zweig...
wie ändere ich meinen code, damit er 1. $data ausgibt - also socket_read() und 2. was muss ich tun, dass dieses script nur einmal schreibt: warte auf eingehende verbindungen. mir ist klar, dass dies derzeit deshalb ist, weil es ja innerhalb der while schleife ist, weiss aber nicht wie ich das sonst lösen soll...
bitte um rat
Code:
PHP-Code:
while ($socket = socket_create(AF_INET, SOCK_STREAM, 0)){
error_reporting (E_ALL);
set_time_limit(0);
$port = 1234;
$host = "ipadresse";
echo "Warte auf eine eingehende Verbindung...\n";
do{
if((@socket_connect($socket, $host, $port)) < 0){
break;
}
echo "erfolg";
do {
if(false === ($buf = @socket_read($socket, 1024))){
break 2;
}
if(!$buf = trim($buf)) {
continue;
}
$data = "";
$readEndCharacter ="\x03";
$data .= $buf;
$endString = substr( $buf, - strlen($readEndCharacter));
if($endString == $readEndCharacter)
echo $data;
break;
}while(true);
} while(true);
socket_close($socket);
}