10
votes

I am writing a simple Python client and server, which works fine passing the server address within my code, however, I want the user to be able to enter the server address and throw and error if its incorrect. When I have the code below I get a error message from the terminal "list index out of range".

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

Can anyone help me with this please.

When I run my client program in python I want to be able to enter a address to connect to and store that in server. I run the program directly from the command line by typing programname.py. The server is already running listening for incoming connections.

1
And you're calling this how? - kindall
is the above not a command line call? - user1978826
You may want to try printing the list to make sure there's something there. print(sys.argv) - user849425
"enter the server address": As a parameter on the commandline or on stdin? - Sebastian
"is the above not a command line call": I don't see a commandline call, here. Please show how you called the server program. - Sebastian

1 Answers

16
votes

With this Python:

import sys

print(sys.argv)

And invoked with this command:

>python q15121717.py 127.0.0.1

I get this output:

['q15121717.py', '127.0.0.1']

I think you are not passing a argument to your Python script

Now you can change your code slightly to take a server form the command line or prompt for a server when none is passed. In this case you would look at something like this:

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