Już powili kumam. Skorzystałem z tutoriala.
http://www.codeproject.com/Tips/418814/Soc...gramming-in-PHPMusze teraz tylko przerobić kod tak aby wykonywał odpowiednie metody oraz obsługiwał błędy. Jak skończę to zamieszczę kod aby ktoś podsuną ewentualnie inne pomysły.
Doszłem do tego momentu:
Kod serwera:
<?php
$host = '127.0.0.1';
$port = 25003;
if( ! $socket = socket_create(AF_INET, SOCK_STREAM, 0) ){
showError();
} else {
echo 'Informache na temat socket zostaly ustawione<br>'; }
if( ! socket_bind($socket, $host, $port) ){
showError($socket);
} else {
echo 'Ustawiono socket na odpowiedni port<br>'; }
if( ! socket_listen($socket, 3) ){
showError();
} else {
echo 'Teraz nasluchuje polaczenia<br>'; }
do {
$client = socket_accept($socket);
echo 'Nowe polaczenie z klientem zostalo ustanowione<br>';
$message = 'Polaczono z serwerem<br>';
socket_write
($client, $message, strlen($message));
do {
if ( ! $clientMssg = socket_read($client, 1024) ){
showError();
}
$messageForUser = 'Dziekuje za informacje. Pomyślimy o tym<br>';
socket_write
($client, $messageForUser, strlen($messageForUser) );
if( ! $clientMssg = trim($clientMssg) ){ continue;
}
if( $clientMssg == 'close' ){
socket_close($client);
echo '<br><br>------------------------------------<br>' . 'Przerwano polaczenie<br>'; break 2;
}
}while(true);
}while(true);
echo 'Socket the endig<br>'; socket_close($socket);
function showError( $theSocket = null){
$errorcode = socket_last_error($theSocket);
$errormsg = socket_strerror($errorcode);
die("Nie mozna utworzyc polaczenia: [$errorcode] $errormsg"); }
Kod klienta:
<?php
$host = "127.0.0.1";
$port = 25003;
$message = "Hello Server";
echo "Message To server :".$message; // create socket
$socket = socket_create
(AF_INET
, SOCK_STREAM
, 0
) or
die("Could not create socket\n"); // connect to server
$result = socket_connect
($socket, $host, $port) or
die("Could not connect to server\n"); // send string to server
socket_write
($socket, $message, strlen($message)) or
die("Could not send data to server\n");// get server response
$result = socket_read
($socket, 1024
) or
die("Could not read server response\n"); echo "Reply From Server :".$result; // close socket
socket_close($socket);
Wynik działania:
1. Po stronie serwera:
Informache na temat socket zostaly ustawione
Ustawiono socket na odpowiedni port
Teraz nasluchuje polaczenia
Nowe polaczenie z klientem zostalo ustanowione
Warning: socket_read(): in C:\xampp\htdocs\cs\cs\server.php on line 37
Warning: socket_last_error() expects parameter 1 to be resource, null given in C:\xampp\htdocs\cs\cs\server.php on line 60
Nie mozna utworzyc polaczenia: [] Operacja ukończona pomyślnie. 2. Po stronie klienta:
Message To server :Hello ServerReply From Server :Polaczono z serwerem
Ktoś może mi pomóc? Będę wdzięczny.
Poprawiłem trochę kod, a mianowicie doałem trim do socket_read:
<?php
$host = '127.0.0.1';
$port = 25003;
if( ! $socket = socket_create(AF_INET, SOCK_STREAM, 0) ){
showError();
} else {
echo 'Informache na temat socket zostaly ustawione<br>'; }
if( ! socket_bind($socket, $host, $port) ){
showError($socket);
} else {
echo 'Ustawiono socket na odpowiedni port<br>'; }
if( ! socket_listen($socket, 3) ){
showError();
} else {
echo 'Teraz nasluchuje polaczenia<br>'; }
do {
$client = socket_accept($socket);
echo 'Nowe polaczenie z klientem zostalo ustanowione<br>';
$message = 'Polaczono z serwerem<br>';
socket_write
($client, $message, strlen($message));
do {
if ( ! $clientMssg = trim(socket_read
($client, 1024
) )){ showError();
}
$messageForUser = 'Dziekuje za informacje. Pomyślimy o tym<br>';
socket_write
($client, $messageForUser, strlen($messageForUser) );
if( ! $clientMssg = trim($clientMssg) ){ continue;
}
if( $clientMssg == 'close' ){
socket_close($client);
echo '<br><br>------------------------------------<br>' . 'Przerwano polaczenie<br>'; break 2;
}
}while(true);
}while(true);
echo 'Socket the endig<br>'; socket_close($socket);
function showError( $theSocket = null){
$errorcode = socket_last_error($theSocket);
$errormsg = socket_strerror($errorcode);
die("Nie mozna utworzyc polaczenia: [$errorcode] $errormsg");
}
Ale i tak mam problem z funkcją showerror a dokładnie z socket_last_error
Warning: socket_last_error() expects parameter 1 to be resource, null given in C:\xampp\htdocs\cs\cs\server.php on line 60
Nie mozna utworzyc polaczenia: [] Operacja ukończona pomyślnie.
No przecież zwraca błąd z null bo jest null

Mam teraz następujący kod:
<?php
$host = '127.0.0.1';
$port = 25003;
if( ! $socket = socket_create(AF_INET, SOCK_STREAM, 0) ){
showError($socket);
} else {
echo 'Informache na temat socket zostaly ustawione<br>'; }
if( ! socket_bind($socket, $host, $port) ){
showError($socket);
} else {
echo 'Ustawiono socket na odpowiedni port<br>'; }
if( ! socket_listen($socket, 3) ){
showError($socket);
} else {
echo 'Teraz nasluchuje polaczenia<br>'; }
do {
$client = socket_accept($socket);
echo 'Nowe polaczenie z klientem zostalo ustanowione<br>';
$message = 'Polaczono z serwerem<br>';
socket_write
($client, $message, strlen($message));
do {
if ( ! $clientMssg = trim(socket_read
($client, 1024
, PHP_NORMAL_READ
) )){ showError($socket);
}
$messageForUser = 'Dziekuje za informacje. Pomyślimy o tym<br>';
socket_write
($client, $messageForUser, strlen($messageForUser) );
if( ! $clientMssg = trim($clientMssg) ){ continue;
}
if( $clientMssg == 'close' ){
socket_close($client);
echo '<br><br>------------------------------------<br>' . 'Przerwano polaczenie<br>'; break 2;
}
}while(true);
}while(true);
echo 'Socket the endig<br>'; socket_close($socket);
function showError( $theSocket = null){
$errorcode = socket_last_error($theSocket);
$errormsg = socket_strerror($errorcode);
die("Nie mozna utworzyc polaczenia: [$errorcode] $errormsg");
}
ostrzeżenie:
Warning: socket_read(): in C:\xampp\htdocs\cs\cs\server.php on line 37