我正在編寫一個通用的客戶端 - 服務器套接字程序,客戶端向服務器發送命令,服務器執行它並將結果發送給客戶端。
但是,如果在執行命令時出現錯誤,我希望能夠通知客戶端有錯誤。我知道我可以發送字符串「錯誤」或類似-1等,但這些也可以是命令輸出的一部分。有沒有更好的方式通過套接字發送錯誤或異常。
我的服務器位於Java,客戶端位於Python套接字上傳遞錯誤
Q
套接字上傳遞錯誤
1
A
回答
0
通常,在進行客戶端 - 服務器通信時,您需要建立某種協議。一個非常簡單的協議是在發送任何錯誤之前發送任何命令和字符串「錯誤」之前發送字符串「命令」。這使得您必須發送的字符串數量翻倍,但提供了更大的靈活性。
還有一些更復雜的協議已經開發出來。您可以構建一個Request對象,然後將其序列化併發送給客戶端,而不是發送Strings。然後,客戶端可以重新構建Request對象,並執行請求,無論它執行錯誤還是運行命令。
0
你已經(一定)建立了一些格式或協議,從而字符串被反覆發送 - 無論你是以某種方式終止每個字符串,或先發送它的長度,或類似的東西。 (TCP本質上只是一個流,所以如果沒有這樣的協議,接收者就不可能知道命令或輸出何時完成!)
因此,無論您用什麼方法來分隔字符串,所以從服務器發送回客戶端的結果是每次兩個字符串:一個是錯誤描述(如果沒有錯誤,則爲空),另一個是命令的結果(如果沒有結果,則爲空)。這對於發送和接收/解析都是微不足道的,並且具有最小的開銷(發送空字符串應該像發送終止符或長度爲0那麼簡單)。
相關問題
- 1. 錯誤試圖通過套接字傳遞(大)圖像在python
- 2. UNIX套接字錯誤:在非套接字上的套接字操作
- 3. UDP套接字上的套接字錯誤10052
- 4. 套接字連接錯誤
- 5. aiohttp - 套接字傳輸上的致命讀取錯誤 - TimeoutError
- 6. 將本地winsock套接字傳遞給java套接字
- 7. Nodejs,雲Firestore上傳任務 - 身份驗證錯誤:錯誤:套接字掛斷
- 8. dev-C++套接字錯誤
- 9. C#套接字錯誤10022
- 10. 套接字發送錯誤
- 11. Java套接字錯誤
- 12. 套接字錯誤 - 蟒蛇
- 13. IPC套接字錯誤
- 14. 套接字EADDRINUSE錯誤
- 15. 套接字錯誤10047
- 16. Python套接字錯誤
- 17. 套接字寫入錯誤
- 18. Windows套接字錯誤10013
- 19. python SMTP - 套接字錯誤
- 20. 套接字通信錯誤
- 21. Android新套接字錯誤
- 22. 套接字錯誤1411
- 23. Android套接字錯誤
- 24. 套接字寫入錯誤
- 25. 套接字讀/寫錯誤
- 26. 模擬套接字錯誤
- 27. WCF套接字錯誤10045
- 28. android套接字寫錯誤
- 29. 套接字綁定錯誤
- 30. Python套接字10048錯誤
也許有一種方法,從服務器端,導致客戶端套接字引發異常? – 2014-05-12 08:59:55
根據我的評論創建了一個問題:http://stackoverflow.com/questions/23605248/from-the-server-side-cause-the-client-socket-to-throw-an-exception – 2014-05-12 09:39:25