![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 138 Pomógł: 0 Dołączył: 1.08.2006 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Witam
Chciałbym zaczerpnąć trochę opinii. Mam stworzyć aplikację do komunikacji i wymiany plików między klientem, a serwerem przez port FTP z interfacem w przeglądarce WWW Wiem, że php ma w sobie odpowiednie mechanizmy i funkcję w związku z wymianą CLient->FTP, jednak muszę oprzeć się na Socketach. Metody Połączenia, utrzymywania połączenia (listen), rozłączania i wiele innych obsługują sockety, jednak jak to ma się do listowania katalogów? Czy za pomocą socketów mogę usuwać lub uploadować pliki. Czy taka wymiana jest bezpieczna? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 138 Pomógł: 0 Dołączył: 1.08.2006 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Co jest w tym nie tak.
Z ftp łącze się w ten sposób: Kod public function connect() { $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if($this->socket) { $result = socket_connect($this->socket, $this->address, $this->port); if($result === true) { $this->conn = TRUE; return '<span id="command">Open '.$this->address.':'.$this->port.'</span><br />'. '<span id="command_recv">'.socket_read($this->socket, 2048).'</span><br />'; } } else { $this->conn = FALSE; return '<span id="command">Open '.$this->address.':'.$this->port.'</span><br />'. '<span id="command_recv">Error: Socket Fail</span><br />'; } } Komendy do serwera oraz odpowiedź serwera uzyskuje w ten sposób: Kod public function send($command) { $command = $command."\r\n"; socket_write($this->socket, $command, strlen($command)); return $command; } Kod public function recv() { usleep(100); $out = socket_read($this->socket, 10000).'<br />'; return $out; } Po odpowiednim wywołaniu metod Kod setcookie('host', $_POST['host']); setcookie('pass', $_POST['pass']); setcookie('login', $_POST['login']); echo $this->model->connect($_POST['host']); echo $this->model->send("USER ".$_POST['login']); echo $this->model->recv(); echo $this->model->send("PASS ".$_POST['pass']); echo $this->model->recv(); echo $this->model->send("PWD"); echo $this->model->recv(); echo $this->model->send("LIST"); echo $this->model->recv(); Cytat Open 195.88.30.227:21 220 Microsoft FTP Service USER *** 331 Password required for kobe. PASS *** 230 User kobe logged in. PWD 257 "/kobe" is current directory. LIST 150 Opening ASCII mode data connection for /bin/ls. Gdy dodam jeszcze jedno wywołanie metody zwracającej (recv()) to: Cytat 425 Can't open data connection Gdzie tu jest problem? Czy php blokuje jakieś porty? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 07:40 |