2013-02-27 21 views
5

Sto scrivendo un semplice client e server Python, che funziona bene passando l'indirizzo del server all'interno del mio codice, tuttavia, voglio che l'utente possa entrare l'indirizzo del server e il lancio e l'errore se è errato. Quando ho il codice qui sotto, ricevo un messaggio di errore dal terminale "list index out of range"."elenco indice fuori intervallo" quando si utilizza sys.argv [1]

server = (sys.argv[1]) 
serverAdd = (server, '65652') # server address and port number 

Qualcuno può aiutarmi con questo per favore.

Quando eseguo il mio programma client in python, desidero essere in grado di immettere un indirizzo per connettersi e archiviarlo nel server. Eseguo il programma direttamente dalla riga di comando digitando programname.py. Il server è già in esecuzione in ascolto delle connessioni in entrata.

+2

E come stai chiamando? – kindall

+0

non è una chiamata da riga di comando sopra? – user1978826

+0

Si consiglia di provare a stampare l'elenco per assicurarsi che ci sia qualcosa lì. 'print (sys.argv)' –

risposta

12

Con questa Python:

import sys 

print(sys.argv) 

e invocato con questo comando:

>python q15121717.py 127.0.0.1 

ottengo questo output:

['q15121717.py', '127.0.0.1'] 

Penso che non sta passando un argomento al tuo Script Python

Ora è possibile modificare leggermente il codice per richiedere a un server di formare la riga di comando o richiedere un server quando nessuno viene passato. In questo caso vedresti qualcosa del genere:

if len(sys.argv) > 1: 
    print(sys.argv[1]) 
else: 
    print(input("Enter address:")) 
+0

Penso che tu abbia ragione. Sto scrivendo pensando che sys.argv [1] sarebbe il secondo elemento ecc ...... quindi nel caso sopra sys.argv ['127.0.0.1'] – user1978826

+0

Grazie per l'aiuto :) –

Problemi correlati