2013-01-15 56 views
0

請參閱在輸出例如: connection refused無效參數遵循連接在Python套接字拒絕

我就是第一次調用s.connect(的問題)拋出「連接被拒絕」,但第二次調用拋出「無效的論點」。這就像第一次調用將套接字對象置於某種錯誤狀態。有沒有辦法重置它?

感謝

+0

你爲什麼不問在[連接拒絕](http://stackoverflow.com/questions/12394950/connection-refused)或在這個問題中包含必要的代碼。 –

+0

原始帖子中的唯一選項是編輯問題或發佈答案。出於某種原因,添加評論的此選項不可用。我想過編輯這個問題,但這似乎改變了線程的內容,而我沒有發佈答案,所以這似乎是最佳的行動方案。對不起,如果我沒有做對。 – user1979957

回答

2

要調用此:

s.connect((gethostname(), 4444)) 

gethostname()所涉及的不僅僅是連接到服務器的更多。它初始化套接字的變量。

下次撥打電話connect時,s已經有一個值,但是無效。所以,你得到Invalid argument

注意:s.connect()實際上調用connect()並將s作爲第一個參數,因爲connect定義爲def connect(self, ...)

+0

從示例輸出的頂部,gethostname()只返回一個字符串,該字符串被傳遞給connect()。你的意思是connect()初始化套接字變量?有沒有辦法「清除」套接字,以便下一次connect()調用不會拋出無效參數? – user1979957

+0

我發現解決此問題的一種方法是每次都重新創建套接字變量s。所以在每個connect()之前,我都這樣做:s = socket(AF_INET,SOCK_STREAM)但是這看起來很浪費且效率低下。這是最好的方式嗎? – user1979957

+0

您可能需要創建一個新的套接字。 – ATOzTOA

相關問題