Python 读取端口号作为参数并执行其他操作
我用python编写了以下脚本:Python 读取端口号作为参数并执行其他操作,python,sockets,Python,Sockets,我用python编写了以下脚本: #!/usr/bin/python import socket import sys import os host=sys.argv[1] port=sys.argv[2] if len(sys.argv) != 3: print 'Usage: python %s <HostName> <PortNumber>' % (sys.argv[0]) sys.exit(); try: s=socket
#!/usr/bin/python
import socket
import sys
import os
host=sys.argv[1]
port=sys.argv[2]
if len(sys.argv) != 3:
print 'Usage: python %s <HostName> <PortNumber>' % (sys.argv[0])
sys.exit();
try:
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
print 'Failed to creat socket. Error code: ' + str(msg[0]) + ' Error message: ' + msg[1]
sys.exit();
try:
host_ip=socket.gethostbyname(host)
except socket.gaierror:
print 'Host name could not be resolved. Exiting...'
sys.exit();
print 'IP address of ' + host + ' is ' + host_ip + ' .'
try:
s.connect((host_ip, port)) #OR s.connect((host_ip, sys.argv[2]))
except socket.error, (value,message):
if s:
s.close();
print 'Socket connection is not established!\t' + message
sys.exit(1);
print 'Socket connected to ' + host + 'on IP ' + host_ip + 'on port number ' + port + '.'
这里怎么了
谢谢
connect()
要求端口
参数使用整数,因为您接受了端口
作为参数,所以它是一个字符串。请确保将其键入int-s.connect((主机ip,int(端口))
connect()
需要一个整数作为端口
参数,并且由于您接受了端口
作为参数,因此它是一个字符串。请确保将其键入int-s.connect((主机ip,int(端口))
sys.argv列表是字符串列表,因此您应该使用内置的int()
函数将其转换为整数:
port=int(sys.argv[2])
sys.argv列表是字符串列表,因此您应该使用内置的int()
函数将其转换为整数:
port=int(sys.argv[2])
错误消息就是答案
port
应该是一个整数,并且您正在传入str
在调用s.connect((主机ip,端口))之前
do
port = int(port)
错误消息就是答案
port
应该是一个整数,并且您正在传入str
在调用s.connect((主机ip,端口))之前
do
port = int(port)
您应该使用
argparse
来处理您的参数。它提供了许多有用的功能,此外还可以方便地解决眼前的问题(而不是将端口号设置为整数)。替换
您应该使用
argparse
来处理您的参数。它提供了许多有用的功能,此外还可以方便地解决眼前的问题(而不是将端口号设置为整数)。替换
它似乎在复杂问题中更有用。它在复杂问题中更有用
host=sys.argv[1]
port=sys.argv[2]
if len(sys.argv) != 3:
print 'Usage: python %s <HostName> <PortNumber>' % (sys.argv[0])
sys.exit();
import argparse
p = argparse.ArgumentParser()
p.add_argument("host")
p.add_argument("port", type=int)
args = p.parse_args()
# And optionally
host = args.host
port = args.port