Skocz do zawartości

[php sockets] komunikacja klient - serwer


yokokeke

Rekomendowane odpowiedzi

Witam. Wlasnie stawiam pierwsze kroki ze socketami. Czy mozna uruchomic na 2 roznych serwerach (standardowe hostingi) skrypty ktore komunikuja sie ze soba? Chodzi mi o to ze client.php jest odpalany przez usera na serwerze 1 ktory komunikuje sie ze skryptem server.php na serwerze 2

Probowalem takiego rozwiazania kopiujac skrypty z jakiegos tutoriala ale plik client.php wywala mi komunikat: connection time out.

ktos z Was ma jakies doswiadczenia w tej dziedzinie? bylbym wdzieczny za jakis kakretny przyklad

Odnośnik do komentarza
Udostępnij na innych stronach

chodzi o to ze dopiero testuje te zagadnienia, a docelowo chce stworzyc prosty serwer dla flash movies.

ok ale dlaczego ponizsze skrypty nie dzialaja? przez telneta tez sie nie da polaczyc

serwer:

<?php

//The Server

error_reporting(E_ALL);

$address = "89.161.201.149";

$port = "10001";

/* create a socket in the AF_INET family, using SOCK_STREAM for TCP connection */

$mysock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (socket_bind($mysock, $address, $port)) {echo "socket bound<br>";}

if (socket_listen($mysock, 5)) {echo "socket listening...<br>";}

$client = socket_accept($mysock);

echo "Server started, accepting connections...\n";

$i = 0;

while (true == true)

{

$i++;

echo "Sending $i to client.\n";

socket_write($client, $i, strlen($i));

$input = socket_read($client, 2048);

echo "Response from client is: $input\n";

sleep(5);

}

echo "Closing sockets...";

socket_close($client);

socket_close($mysock);

?>

klient:

<?php

//The Client

error_reporting(E_ALL);

$address = "89.161.201.149";

$port = 10001;

/* Create a TCP/IP socket. */

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if ($socket === false) {

echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";

} else {

echo "socket successfully created.\n";

}

echo "Attempting to connect to '$address' on port '$port'...";

$result = socket_connect($socket, $address, $port);

if ($result === false) {

echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";

} else {

echo "successfully connected to $address.\n";

}

$i = 0;

while (true == true)

{

$i++;

echo "Sending $i to server.\n";

socket_write($socket, $i, strlen($i));

$input = socket_read($socket, 2048);

echo "Response from server is: $input\n";

sleep(5);

}

echo "Closing socket...";

socket_close($socket);

?>

Odnośnik do komentarza
Udostępnij na innych stronach

Powodzenia, bo lata pracy i nauki przed tobą :)

Co do postu:

https://pl.php.net/manual/pl/function.socket-accept.php

If you want to have multiple clients on a server you will have to use non blocking.

Jeśli wszystko dobrze zrobiłeś to ten serwer powinien zaakceptować jedno połączenie i się wyłączyć. Chyba, że w PHP masz domyślnie sockety nieblokujące. Nie znam się na tym, jak powiedziałem PHP się nie nadaje do napisania serwera. Zabawki tak, tylko po co?

W ogóle to odsyłam do jakiejś dobrej książki o budowie serwerów internetowych, na forum nie masz raczej czego szukać to zagadnienie które można zgłębiać kilka lat. Może poczytaj jakąś dobrą anglojęzyczną grupę dyskusyjną albo listę mailingową / dokumentację apache. Oczywiście dobra znajomość C / C++ to podstawa. Inaczej tracisz tylko czas.

Jeszcze:

High performance flv-streaming with lighttpd is possible since lighttpd 1.4.11.

With lighty you can easily handle 10000 parallel downloads of your movies including protection against hot-linking with mod_secdownload. This is basicly all you need to build the free video.google.com for yourself.

Just add this you your lighttpd.conf and restart the server:

server.modules = ( ..., "mod_flv_streaming", ... )

flv-streaming.extensions = ( ".flv" )

https://jan.kneschke.de/projects/flv-streaming/

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności