![]() |
![]() |
![]()
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%) ![]() ![]() |
Bardzo dziwna sprawa.
Błędów składniowo językowych nie sypie. Również nie wyrzuca błędów z socketami: Do każdego wywołania operacji dodałem wartość jaką zwraca socket_last_error() Cytat Open 195.88.30.227:21 220 Microsoft FTP Service USER *** ErrorMessage: Success 331 Password required for kobe. ErrorMessage: Success PASS *** ErrorMessage: Success 230 User kobe logged in. ErrorMessage: Success SYST ErrorMessage: Success 215 Windows_NT ErrorMessage: Success TYPE A ErrorMessage: Success 200 Type set to A. ErrorMessage: Success PASV ErrorMessage: Success 227 Entering Passive Mode (195,88,30,227,47,3) ErrorMessage: Success LIST ErrorMessage: Success 425 Can't open data connection. ErrorMessage: Success No i gdzie tu jest błąd? Dodaje całą klase która zarządza socketami, może znajdziecie problem Kod require_once('./Model.php');
class Ftp { public $host=null; public $port=null; private $socket; private $conn=FALSE; private $address; private $login=FALSE; public function __construct($host, $port=21) { $this->host = $host; $this->port = $port; $this->address = gethostbyname($host); $this->buffor(); } public function connect() { $this->socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if($this->socket !== false) { $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_strerror(socket_last_error($this->socket)).'</span><br />'; } } public function isConnected() { return $this->conn; } public function send($command) { $command = $command."\r\n"; socket_write($this->socket, $command, strlen($command)); //Model::valideCommnad(&$command); $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); return $command.'ErrorMessage: '.$errormsg.'<br />'; } public function recv($time) { usleep(100); $out = socket_read($this->socket, 2048); $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); return $out.'ErrorMessage: '.$errormsg.'<br />'; } public function isLogin() { return $this->login; } public function getHost() { return $host; } public function getPort() { return $host; } public function __destruct() { socket_close($this->socket); } } Ten post edytował k0b3 6.06.2010, 10:45:15 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 02:22 |