<?php $address = '192.168.0.1'; $port = 522; if (($sock = socket_create(AF_INET, SOCK_STREAM, 0)) < 0) if (($ret = socket_bind($sock, $address, $port)) < 0) if (($ret = socket_listen($sock, 5)) < 0) do{ if (($msgsock = socket_accept($sock)) < 0) { break; } $msg = \"nWelcome to the KAB php Test Server. n\"; do{ if (FALSE === ($buf = socket_read ($msgsock, 4096, PHP_NORMAL_READ))) { break 2; } { continue; } if ($buf == 'quit') { break; } if ($buf == 'get') { $message = 'file'; if(!(FALSE === ($b = socket_read ($msgsock, 4096, PHP_NORMAL_READ)))) { $message = 'ok'; while(!(FALSE === ($b = socket_read ($msgsock, 10240, PHP_NORMAL_READ)))) { if($b != \"end\") { }else{ break 2; } } }else{ } } if ($buf == 'shutdown') { $quit_message = 'Dziękujemy za skorzystanie z naszych usług'; socket_close($msgsock); break 2; } $talkback = \"> '$buf'.n\"; }while(true); socket_close ($msgsock); }while(true); socket_close ($sock); ?>
Klient (przez www):
<PRE><?php $plik = \"do_przeslania.zip\"; $sciezka = \"./\"; { { { } }else{ } }else{ } ?></PRE>
Klient wysyła zawartość pliku odczytanego z dysku na serwer.
Serwer jest jednowątkowy piki co, ale jak na pierwsze moje dzieło z użyciem socket_* to chyba nieźle...
Byłbym wdzięczny za poprawki do tego wspaniałego (moim skromym zdaniem) serwera...
Klient będzie docelowo napisany w php-GTK, tak by odczytywać pliki z dysków użytkowników...
Celem jest stworzenie uploadera w php-GTK (klient) i php (serwer).
Klient tutaj zamieszczony jest (jak już wspomniałem) dla potrzeb testów...
Najbardziej liczę na waszą pomoc jeżeli chodzi o dodanie wielowątkowości do serwera - tak by naraz z niego mogło korzystać wiele osób.
Jeżeli okaże się to niemożliwe, to proszę o podpowiedź w jaki sposób można "zablokować" serwer przed kolejnymi uploadami (tak, by klient wiedziałm że serwer jest wykorzystywany przez kogoś innego i musi poczkać)
<b>Właśnie - najważniejsza sprawa - serwer jest pod windowsa!</b>
Nie mam zielonego pojęcia, czy i w jaki sposób będzie działał pod linuxem...
UpDated: malutki bug w kliencie - nazwy zmiennych
UpDated: dodanie "if mod loaded = false"...
Uaktualniłem BBCode do wersji z IPB...
