我有一個程序偵聽等待少量數據的端口,告訴它該做什麼。我運行該程序的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