2010-06-09 19 views
38

Sono consapevole che questa non è una domanda diretta di "sviluppo" ma ho bisogno di queste informazioni per testare un progetto di sviluppo, quindi penso che qualcuno potrebbe aver riscontrato un problema simile.Strumento Linux per inviare dati grezzi a un server TCP

Verificherò un software che esegue un server TCP e in base ai comandi inviati risponde alcune risposte. Testerò il software e non voglio scrivere codice se non funziona bene. Quindi voglio inviare quei comandi e testare il software del server.

Come posso ottenere questo risultato con una scatola Linux?

risposta

43

netcat o telnet, ho usato entrambi in passato per testare semplici protocolli basati su testo. netcat è più flessibile.

+7

o socat, per netcat ++ –

+0

@luke: non funziona su flussi binari. – user2284570

0

Suoni come Expect possono essere ciò che desideri. Ci sono implementazioni per più linguaggi di scripting, e si può di script le richieste/risposte del server più appropriati timeout, gestione degli errori, ecc

+2

Si prega di mostrare qualche esempio, è raro trovare qualcuno che capisca l'aspettativa correttamente per più connessioni TCP. Ho un problema quando faccio una connessione singola funziona, ma quando viene multi connessione ci vuole più della durata normale. Si prega di mostrare qualche esempio come si può fare questo con aspettarsi? '(echo '2'> /dev/tcp/192.168.1.161/8888) && (sleep 1; echo '2'> /dev/tcp/192.168.1.163/8888)' – YumYumYum

+3

Sono sorpreso che questo viene downvoted, quando la risposta più votata e accettata consiglia telnet di "testare semplici protocolli testuali" –

55

Da bash con dd:

dd if=/dev/zero bs=9000 count=1000 > /dev/tcp/$target_host/$port 

o anche con il gatto:

cat </dev/urandom> /dev/tcp/$target_host/$port 
+6

'/ dev/tcp/*/*' è un nome file speciale che bash gestisce in modo speciale. In realtà non esiste. – Flimm

+0

'(echo '2'> /dev/tcp/192.168.1.161/8888) && (sleep 1; echo '2'> /dev/tcp/192.168.1.163/8888)' perché più di 1 impiega 5 minuti ma quando usato 1 richiesta poi meno di 1 secondo è fatto? – YumYumYum

+0

Mentre 'nc' è probabilmente lo strumento migliore, questa dovrebbe essere la risposta accettata. – Arj

Problemi correlati