python - 编写 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()
解决方案
您不能两次连接同一个套接字,您需要为第二次连接创建一个新套接字。
另外,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()
推荐阅读
- reactjs - 我的反应应用程序中的控制台出现未知错误
- json - 如何上传/转换 json 文件到 firestore 数据库
- jsonschema - 覆盖继承的 json 架构
- android - RxJava2 onNext() 多次调用?
- python - 如何在Python中删除输入中的空格
- php - PHP fputcsv导致err_invalid_response错误
- java - 将bean从动作映射到struts2中的表单
- javascript - 使用 Vue.js 从 firebase 获取用户电子邮件
- r - 警告:数组中的错误:“数据”必须是向量类型,在 Kmeans 聚类中为“NULL”
- sql - 通过一次查询从多个 sql server 表中获取值