Esiste un modo multipiattaforma per aprire una connessione TCP, inviare una richiesta di posta HTTP e mantenere aperta la connessione?

2

Sto cercando un modo per aprire una connessione TCP, inviare una richiesta HTTP e mantenere aperta la connessione.

Sarebbe fantastico se riuscissi a ottenere ciò senza i diritti di amministratore / root, da un'interfaccia a linea di comando (CLI), multipiattaforma e con parametri di passaggio.

Alcune informazioni di base. Sono riuscito a ricostruire una richiesta HTTP diretta verso una Apple TV, per avviare uno streaming live HTTP supportato. Nello stesso modo in cui funziona AirPlay. Ho provato questo in due modi diversi, e quindi ho una prova di concetto usando telnet e usando socket PHP. Voglio creare un progetto GitHub open source aggiungendo il codice sorgente e una piccola GUI (eseguibile compilato per Linux, OSx e Windows) in modo che gli utenti possano riempire qualsiasi URL di streaming supportato e inviarlo direttamente alla loro AppleTV.

Una soluzione multipiattaforma consisterà in almeno un eseguibile / script funzionante per Windows, OSx e Linux. Accettando un tipo di obiettivo e fonte, ad esempio:

./persistent_tcp.sh -t 192.168.1.10:7000 -s http://example.com/stream.m3u8
./persistent_tcp.exe -t 192.168.1.10:7000 -s http://example.com/stream.m3u8

All'interno dello script vorrei specificare la richiesta HTTP esatta, usando l'argomento -s come flusso di destinazione (valore nella richiesta HTTP). Idealmente, restituirebbe una sorta di PID e continuerà invece di mantenere il processo "visibilmente" aperto o in attesa. Con il PID, riesco a chiudere il PID precedente quando ne viene avviato uno nuovo. Anche se questo non è necessario.

Una nuova richiesta annullerà comunque quella precedente su AppleTV, ma voglio anche che i processi vengano ripuliti. Il motivo per cui voglio una soluzione multipiattaforma è che posso integrarlo in diverse GUI multipiattaforma e offrire script CLI multipiattaforma per farlo.

Ho verificato diverse soluzioni, ma curl e wget , incluse le loro porte Windows, non sembrano in grado di farlo. Telnet su Windows funziona perfettamente fino a quando il terminale / connessione è aperto (e l'utente ha abbastanza diritti) e gli zoccoli PHP funzionano come un incantesimo finché il processo / connessione rimane aperto. Non voglio usare, inserire PHP (anche se è multipiattaforma) perché lo considero un'enorme dipendenza (leggi: troppo grande per un simile compito).

Non mi interessa in quale linguaggio di programmazione posso ottenere questo. Finché è efficiente (leggi: piccolo ingombro) e non richiede troppe dipendenze o risorse. Dal momento che non si adatta ad un compito così piccolo. In alternativa vado anche bene con una soluzione separata per Windows e una per Linux / OSx) .

Sto bene con bash / sh, bat / cmd / vbs, script apple, node.js e altri linguaggi o eseguibili precompilati o standalone / portatili che si adattano al lavoro e non richiedono il client per installare software aggiuntivo. (Probabilmente sono in grado di integrare PHP, Python o Java come indipendenti, ma la chiave è l'efficienza.Non sarà felice se finiremo con un eseguibile con interfaccia grafica 50mb, mentre la richiesta HTTP effettiva è inferiore a 10 righe di codice.)

    
posta Bob Ortiz 23.07.2016 - 16:40
fonte

1 risposta

1

ncat è disponibile per varie piattaforme e consente (in effetti, richiede) di comporre manualmente l'intero corpo della richiesta HTTP. Per controllarlo puoi usare sh: ci sono varie implementazioni disponibili per Windows (inclusi cygwin, GnuWin32 e Ubuntu su Windows per Win10) o puoi scrivere un batch separato o uno script PowerShell per Windows.

    
risposta data 03.08.2016 - 15:50
fonte

Leggi altre domande sui tag