首页 > 解决方案 > 编写 python 脚本连接到端口

问题描述

我现在正在上 Sam Bowne 的在线课程,并试图在 1 秒内连接到一个端口。我想出了如何打印新的端口号但无法连接:

import socket
socket.setdefaulttimeout(2)
s=socket.socket()

i=20001
target= 'packtpub.samsclass.info'

try:
        s.connect((target,int(i)))
        x = s.recv(1024)
        print(x)
        abe = x[24:29]
        print abe

finally:
        print 'Knocking on second port:'
        s.connect(('packtpub.samsclass.info',int(abe)))
        print s.recv(1024)
        s.close()

标签: pythonnetworking

解决方案


您不能两次连接同一个套接字,您需要为第二次连接创建一个新套接字。

另外,finally:应该是else:。如果 中有错误try,则不会分配abe,并且您不能将其用于第二次连接。else:只有在没有错误的情况下才会运行。

但这只有在您也有except:. 如果没有,您可以简单地将后面的代码放在第一个代码之后,您不需要try.

import socket
socket.setdefaulttimeout(2)
s=socket.socket()

i=20001
target= 'packtpub.samsclass.info'

try:
    s.connect((target,int(i)))
    x = s.recv(1024)
    print(x)
    abe = x[24:29]
    print(abe)
    s.close()

else:
    print 'Knocking on second port:'
    s2 = socket.socket()
    s2.connect((target,int(abe)))
    print(s2.recv(1024))
    s2.close()

推荐阅读