Опитвам се да направя най-елементарен чат с помощта на сокети. Прочетох тази статия и по нея всичко работи. Имам си сървърна част, чрез telnet се свързах няколко пъти и с мака промяна, така че всички свързани да получават съобщението ми (кода долу) стана нещо като чат и започнах да си пиша сам.
Въпросът е сега накъде?
Има доста неща, които не ми е съвсем ясно как ще станат.
1. Как ще стане да имам уеббазиран чат? Очевидно първо трябва да стартирам сървъра. Той постоянно ли трябва да е пуснат от командния ред, например?
2. Пробвах със следния код да направя клиентската част, за да я отварям през браузъра, вместо от командния ред:
Но, когато отворя client.php в браузъра, на терминала вместо да излезе веднъж съобщението Sending output to client, то излиза до безкрайност. Къде греша?
Код:
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);
?>