我有一个程序侦听等待少量数据的端口,告诉它该做什么。我运行该程序的5个实例,每个端口从5000到5004包含一个。当尝试打开,写入和关闭套接字几次时(Python),连接被拒绝
我有用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)
真的没有足够的信息来有效地解决这个问题。尝试使用基本套接字的小脚本缩小范围,如果仍然无法弄清楚,请包含这些简单的脚本。 – 2009-07-17 20:41:14
你运行的是哪个版本的python?并在哪个平台(操作系统)? – 2009-07-17 20:45:03