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

我用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.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