UDP:是User Datagram Protocol的簡稱,用戶數據包協議,是 OSI 參考模型中壹種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。
TCP和UDP傳輸就類似於我們的手機通電話和手機發短信,壹種必需連通了,才能夠通話,相對來說比較可靠,傳輸速度比較快,另壹種可以在關機狀態(無連接)發送信息,相對來說,可靠性比較差,傳輸速度較慢。具體的差別如下:
TCP協議面向連接,UDP協議面向非連接
TCP協議傳輸速度慢,UDP協議傳輸速度快
TCP協議保證數據順序,UDP協議不保證
TCP協議保證數據正確性,UDP協議可能丟包
TCP協議對系統資源要求多,UDP協議要求少
不管是基於TCP還是基於UDP的網絡通訊編程,都要區分服務器端和客戶端,下面以TCP為例,實現客戶端和服務器端通訊的實現步驟:
TCP服務器端的編寫步驟:
1. 首先,妳需要創建壹個用於通訊的套接口,壹般使用socket調用來實現。這等於妳有了壹個用於通訊的電話:)
2. 然後,妳需要給妳的套接口設定端口,相當於,妳有了電話號碼。這壹步 壹般通過設置網絡套接口地址和調用bind函數來實現。
3. 調用listen函數使妳的套接口成為壹個監聽套接字。 以上三個步驟是TCP服務器的常用步驟。
4. 調用accept函數來啟動妳的套接字,這時妳的程序就可以等待客戶端的連接了。
5. 處理客戶端的連接請求。
6. 終止連接。
TCP編程的客戶端壹般步驟是:
1、創建壹個socket,用函數socket();
2、設置socket屬性,用函數setsockopt();* 可選
3、綁定IP地址、端口等信息到socket上,用函數bind();* 可選
4、設置要連接的對方的IP地址和端口等屬性;
5、連接服務器,用函數connect()(相當於撥號);
6、收發數據,用函數send()和recv(),或者read()和write()(相當於通話);