回答
套接字中的協議幾乎可以作爲串行協議來實現。但一個很好的例子就是使用命令,你可以使用基於文本位置的佈局來實現它的更基本的形式,例如,
客戶寫道:
$ADD|Yongwei|Xing|25|M|#
服務器響應和aknowledge如果一切正常(該數據是有效的),或者用代碼,如果沒有一個錯誤:
$ACK#
或:
$ERR|2|#
ADD是您的代碼必須讀取和評估的命令。也許你可以使用前三個字符作爲命令,參數分隔,就像這個例子一樣。
我建議您使用特殊字符而不是$和#分隔符。特殊字符的ASCII表的前30個字符,並且有適合工作的正確的字符:
dec char meaning:
2 STX Start of text
3 ETX End of text
4 EOT End of trasmission
5 ENQ Enquiry (asking for data, asking for a chance of transmission)
6 ACK Acknowledge (confirmation of data received, allowing trasmission)
應答位可作爲確認,如
,他打算通過發送詢盤的ASCII字符(我使用<和>來表示一個特殊字符)來傳輸一些數據客戶端通知服務器:
<ETX>
如果服務器已準備好讀數據,然後用確認的確認:
<ACK>
則客戶端使用命令啓動發送數據:
<STX>ADD|jhon|deer|56|M|<ETX>
以及服務器用<ACK>
確認它的每一個命令所以客戶端一直在發送數據,並且當數據被傳送時,然後發送一個<EOT>
來通知服務器可以停止讀取數據(這樣一來,試圖讀取它作爲一個命令)。
這是一個相當開放的問題,但是如果你在套接字層面上操作,你可能是一個太深的層次,特別是如果你正在做應用程序開發。諸如用於網絡通信的庫boost::asio以及用於表示和編碼/解碼的庫將有所幫助。使用Google Web Toolkit (GWT)將簡化創建UI。您也可以考慮使用App Engine來託管後端代碼,因爲它會爲您提供比大多數DIY作業更高的可靠性和可擴展性。
對於內部使用,最簡單的解決方案是最好的解決方案。使用套接字(Windows上的winsock2,* BSD和Linux上的POSIX套接字),您應該在客戶端和服務器之間交換一些明文,例如FTP protocol,例如:
在FTP中,客戶端發送類似ASCII關鍵字的命令:QUIT ,LIST,STOR ...,參數用空格分隔。標記應該指示命令的結束。最簡單的標記是字符\n
。然後,服務器向客戶端發送返回代碼以指示是否存在錯誤。返回碼只是一個數字,全部以純文本格式顯示。與返回代碼一起,有一條消息可以解釋錯誤,如果有的話。
FTP已在1985年的RFC中指定。它仍然正常工作,並且仍然被廣泛使用。 HTTP在客戶端發送由純文本中的幾行組成的HTTP標頭(由\n
分隔)的意義上類似。
您應該關心的主要問題是您的解決方案的安全性。即使在內聯網上,例如,也必須使用安全機制來避免企業網絡上的數據泄漏。
最簡單的事情就是使用ssh(如OpenSSH)來加密你的網絡連接。它允許您控制誰可以調用服務器(身份驗證)並允許您加密數據。如果您的數據位於專用於您的應用程序的專用網絡上,則無需加密數據。
- 1. 如何在Android應用程序中實現Wiegand協議
- 2. 如何在iOS應用程序中實現Bayeux協議
- 3. 如何實現協議
- 4. USB協議實現的程序設計
- 5. 如何使用WebRTC實現HTTP協議?
- 6. 如何在iOS中實現SIP(會話初始協議)應用程序?
- 7. 實現NSCoding協議
- 8. iPhone應用程序UI實現建議
- 9. 如何在Ruby中實現INSTREAM協議?
- 10. 如何檢查協議是否實現?
- 11. 如何在MPI協議中實現MPI_Comm?
- 12. 如何實現UIApplicationDelegate的協議方法?
- 13. 你如何實現UIAccessibility協議?
- 14. 協議在內部如何實現?
- 15. 如何實現自定義協議
- 16. NSArray如何實現NSCopying協議
- 17. 如何實現Three20框架的協議?
- 18. CLLocation如何實現Equatable協議?
- 19. .NET如何調試應用程序協議處理程序?
- 20. 如何在swift中使用協議實現併發線程?
- 21. Windows 8協議從現代應用程序激活桌面應用程序
- 22. 通過UDP(用戶數據報協議)實現聊天應用程序?
- 23. 協議Ecto.Queryable未實現
- 24. 無法實現協議
- 25. CSAFE協議的實現
- 26. 網絡協議的實現
- 27. RFB協議的實現
- 28. 協議實現中的IBOutlet
- 29. 實現FTP接口/協議
- 30. Atmega328 Wiegand協議實現
這個問題相當廣泛。有許多應用程序協議,包括HTTP,FTP,SSH等等。如果你可以更具體,我們可能會更有幫助。 – kbrimington 2010-08-27 04:25:25