我有一个程序在端口上监听,等待少量数据告诉它该怎么做。我运行了该程序的5个实例,每个端口从5000到5004(含两端)一个。
我有第二个用Python编写的程序,该程序创建一个套接字“s”,将数据写入端口5000,然后关闭。然后,它增加端口号并创建一个连接到5001的新套接字。直到达到5004为止,它都会这样做。
前三个套接字连接工作正常。端口5000到5002上的程序可以正常接收数据,然后就消失了!但是,第四个套接字连接会导致“连接被拒绝”错误消息。同时,第四个监听程序仍报告它正在端口5003上等待-我知道它正在正确监听,因为我能够使用Telnet连接到它。
我尝试更改端口号,并且每次都是第四个连接失败。
我应该检查的系统是否有限制?我在发送端的任何时候都只能打开一个套接字,而事实上我可以通过5个端口中的3个打开,这消除了我能想到的许多基本的故障排除步骤。
有什么想法吗?谢谢!
- - 编辑 - -
我使用的是python版本2.6的CentOS Linux。这是一些示例代码:
try:
portno = 5000
for index, data in enumerate(data_list):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('myhostname', portno))
s.sendall(data)
s.close()
portno = portno + 1
except socket.error, (value,message):
print 'Error: Send could not be performed.\nPort: ' + str(portno) + '\nMessage: ' + message
sys.exit(2)
最佳答案
这听起来很像防火墙的反端口扫描措施。
关于python - 尝试多次打开,写入和关闭套接字时,连接被拒绝(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145540/