TCP和UDP的區別及socket網絡編程步驟


TCP和UDP的區別

1.連接

  TCP是面向連接的傳輸層協議,即傳輸數據之前必須先建立好連接。

  UDP無連接。

2. 服務對象

  TCP是點對點的兩點間服務,即一條TCP連接只能有兩個端點;

  UDP支持一對一,一對多,多對一,多對多的交互通信。

3.可靠性

  TCP是可靠交付:無差錯,不丟失,不重復,按序到達。

  UDP是盡最大努力交付,不保證可靠交付。

4.擁塞控制,流量控制

  TCP有擁塞控制和流量控制保證數據傳輸的安全性。

  UDP沒有擁塞控制,網絡擁塞不會影響源主機的發送效率。

5. 報文長度

  TCP是動態報文長度,即TCP報文長度是根據接收方的窗口大小和當前網絡擁塞情況決定的。

  UDP面向報文,不合並,不拆分,保留上面傳下來報文的邊界。

6.首部開銷

  TCP首部開銷大,首部20個字節。

  UDP首部開銷小,8字節。(源端口,目的端口,數據長度,校驗和)

socket網絡編程的步驟

1.基於TCP的socket:

  服務器端程序:

    ① 創建一個socket,用函數socket()

    ② 綁定IP地址、端口等信息到socket上,用函數bind()

    ③ 設置允許的最大連接數,用函數listen()

    ④ 接收客戶端上來的連接,用函數accept()

    ⑤ 收發數據,用函數send()和recv(),或者read()和write()

    ⑥ 關閉網絡連接close()

  客戶端程序:

    ① 創建一個socket,用函數socket()

    ② 設置要連接的對方的IP地址和端口等屬性

    ③ 連接服務器,用函數connect()

    ④ 收發數據,用函數send()和recv(),或read()和write()

    ⑤ 關閉網絡連接close()

2.基於UDP的socket:

  服務器端流程

    ① 建立套接字文件描述符,使用函數socket(),生成套接字文件描述符。

    ② 設置服務器地址和偵聽端口,初始化要綁定的網絡地址結構。

    ③ 綁定偵聽端口,使用bind()函數,將套接字文件描述符和一個地址類型變量進行綁定。

    ④ 接收客戶端的數據,使用recvfrom()函數接收客戶端的網絡數據。

    ⑤ 向客戶端發送數據,使用sendto()函數向服務器主機發送數據。

    ⑥ 關閉套接字,使用close()函數釋放資源。UDP協議的客戶端流程

  客戶端流程

    ① 建立套接字文件描述符,socket()

    ② 設置服務器地址和端口,struct sockaddr。

    ③ 向服務器發送數據,sendto()

    ④ 接收服務器的數據,recvfrom()

    ⑤ 關閉套接字,close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM