我正在爲使用自己的協議編寫的Python服務器上工作,但我遇到了問題。 客戶端連接到服務器,並且sendall()
的三條數據:數據包標識字節,字符串長度和UTF-8編碼字符串。從客戶端接收的TCP服務器有時不起作用
在客戶端,我沒有錯誤,但在服務器端,此:
error: [Errno 10054] An existing connection was forcibly closed by the remote host
發生。錯誤發生在每次不同的行上,有時候是識別字節,有時在讀取字符串長度時,有時在讀取字符串本身時,有時它會很好地工作,就像它應該的那樣。
這是怎麼回事?服務器計算機具有防火牆異常。客戶端連接,連續發送三個數據,然後關閉套接字。我做得太快了嗎?
謝謝。
請從服務器和客戶端代碼發佈(即複製,粘貼,格式化SO)相關代碼片段。最好是別人可以運行的代碼來自己嘗試。此外,請描述您嘗試解決此問題的任何嘗試(http://whathaveyoutried.com/)以及爲什麼您認爲他們無法正常工作。 – crayzeewulf 2013-03-09 01:17:06
管理這個的代碼分散在幾個類,@crazewulf,這將是一個很大的努力,試圖以可重用的方式重建。這個錯誤看起來像一個套接字級的錯誤,我希望有人會給我一個普遍的答案,我提供的一般信息。如果沒有發生,我會製作樣品。謝謝。 – Jishaxe 2013-03-09 01:22:34
OP,在這種情況下,使用[this](http://docs.python.org/2/library/socketserver.html#socketserver-tcpserver-example)代碼作爲示例編寫您自己的小型TCP服務器和客戶端,併發送與您的大型應用程序相同的數據。看看你是否可以重現這個問題。用這個測試代碼和錯誤消息報告結果(如果有的話)。基本上,試着把問題歸結爲一個小的代碼片段,SO可以被其他人用來調試這個問題。 – crayzeewulf 2013-03-09 01:24:14