E' possibile creare in PHP un applicazione che si colleghi tramite il protocollo TCP/IP a un Host su una porta e comunichi come un Terminale Telnet?
Benvengano link e tutorial![]()
E' possibile creare in PHP un applicazione che si colleghi tramite il protocollo TCP/IP a un Host su una porta e comunichi come un Terminale Telnet?
Benvengano link e tutorial![]()
Beh lo puoi fare tramite i socket, ma non è molto interattivo, in quanto non puoi avere una connessione continua, inoltre se volessi fare (per esempio) una simil-shell, ad ogni comando inviato dovresti ricaricare la pagina.
Ti conviene cercare (o fare tu stesso) qualche applet java, anche se poi la comunicazione avverrebbe dal client e non dal server.
vi va bene ricaricare la pagina.Originariamente inviato da fabi080
Beh lo puoi fare tramite i socket, ma non è molto interattivo, in quanto non puoi avere una connessione continua, inoltre se volessi fare (per esempio) una simil-shell, ad ogni comando inviato dovresti ricaricare la pagina.
in che senso non posso avere una connesione interattiva? ogni volta le socket devono connettersi e sconnetersi?
In teoria si, http è un protocollo stateless, ora non so se il motore php fa una qualche sorta di ottimizzazione, come ad esempio le funzioni della famiglia pconnect per la connessione ai database, non ho mai usato i socket con php.Originariamente inviato da JoeP
in che senso non posso avere una connesione interattiva? ogni volta le socket devono connettersi e sconnetersi?
Tanto per cominciare puoi andare qui http://it2.php.net/manual/it/ref.network.php
beh ... in realtà non è affatto vero che non si può fare una connessione "persistente"
infatti ci sono 2 modi per farla, che si basano sulla stessa struttura però e differiscono solo in un particolare:
- devi creare la tua pagina e quando viene premuto il tasto connetti o comunque quando devi avviare la connessione ... fai creare tramite javascript una connessione tramite il XMLDOM W3C alla pagina passandogli i dati che ti servono per far partire la connessione.
- Nella pagina devi generare un fork e sganciarlo dalla "sessione" corrente ... nello standard posix ogni programma è eseguito all'interno di una sessione che può essere una già esistente, ad esempio la sessione della bash o di apache, nel nostro caso, oppure può essere una nuova, tramite l'apposito comando. Devi usare posix_setsid nel processo figlio dopo aver usato pcntl_fork in pratica. In questo modo crei il processo e lo sganci dalla sessione corrente e se muore il fork nel quale è stato eseguita la pagina non ha nessuna importanza. A questo punto devi fare in modo che il processo figlio supporti una sorta di timeout di sessione ... in modo che se non riceve comandi per N tempo allora deve chiudersi.
- Per comunicare con questo fork puoi usare o le socket, basta ad es che la pagina che è stata rpecedentemetne chiamanta per generare la connessione restituisca la porta sulla quale il processo figlio si è bindato per ascoltare i comandi e quindi ti connetti ad essa e gli mandi dei dati che magari possono essere direttamente i dati che devono arrivare all'altra estremità, quindi una specie di proxy ... oppure puoi usare la shm e i semofori
per quanto riguarda documentazione ed esempi:
http://it2.php.net/posix
http://it.php.net/manual/it/ref.sem.php
http://it.php.net/manual/it/ref.pcntl.php
http://it2.php.net/manual/it/ref.sockets.php
questo, al 90%, non funzionerà su server windows.
Se ti serve per il testing un linux e non hai pc dove installarlo ti consiglio di provare o co-linux, ovvero linux che gira in modalità cooperativa su windows, ovvero il cuore di linux invece di accedere all'hardware usa le chiamate di windows, oppure le cygwin che è un porting dei tool linux e delle librerie per usare le chiamate di windows. Con la prima opzione hai praticamente linux vero e proprio, quindi sei sicuro al 100% che come funziona li funzionerà sul server linux e gli stessi problemi che avrai li li avrai sul server linux ... con la seconda questa certezza matematica non la hai
sciauz
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
Grazie daniele... Ma a dire il vero c'ho capito ben poco... Non esistono script già pronti? Ho uno spazio su altervista che dovrebbe essere su Linux, potrei provarlo lì...
no, hai bisogno con buonissime probabilità di un server dedicato per fare queste cose o comunque uno spazio a pagamento ... su altervista non puoi farlo ... disabilitano le estensioni ^^
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb