PHP сокети

misho

Registered
Опитвам се да направя най-елементарен чат с помощта на сокети. Прочетох тази статия и по нея всичко работи. Имам си сървърна част, чрез telnet се свързах няколко пъти и с мака промяна, така че всички свързани да получават съобщението ми (кода долу) стана нещо като чат и започнах да си пиша сам. :D
Код:
			for ($j = 0; $j < $max_clients; $j++) {
				if($client_socks[$j] != null && $client_socks[$j] != $client_socks[$i]) {
					socket_write($client_socks[$j] , $i.": ".$output);
				}
			}
Въпросът е сега накъде?
Има доста неща, които не ми е съвсем ясно как ще станат.
1. Как ще стане да имам уеббазиран чат? Очевидно първо трябва да стартирам сървъра. Той постоянно ли трябва да е пуснат от командния ред, например?
2. Пробвах със следния код да направя клиентската част, за да я отварям през браузъра, вместо от командния ред:
Код:
<?php

if(!($sock = socket_create(AF_INET, SOCK_STREAM, 0)))
{
	$errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    
    die("Couldn't create socket: [$errorcode] $errormsg \n");
}

echo "Socket created \n";

//Connect socket to remote server
if(!socket_connect($sock , '127.0.0.1' , 5001))
{
	$errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    
    die("Could not connect: [$errorcode] $errormsg \n");
}
echo "Connection established \n";

$message = "GET / HTTP/1.1\r\n\r\n";

//Send the message to the server
if( ! socket_send ( $sock , $message , strlen($message) , 0))
{
	$errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
    
    die("Could not send data: [$errorcode] $errormsg \n");
}
echo "Message send successfully \n";

// close socket
socket_close($sock);
?>
Но, когато отворя client.php в браузъра, на терминала вместо да излезе веднъж съобщението Sending output to client, то излиза до безкрайност. Къде греша?
 

Back
Горе