Linux下编写UDP/TCP版本的服务器和客户端的流程
生活随笔
收集整理的這篇文章主要介紹了
Linux下编写UDP/TCP版本的服务器和客户端的流程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux下編寫UDP/TCP版本的服務器和客戶端的流程
文章目錄
- Linux下編寫UDP/TCP版本的服務器和客戶端的流程
- 一:UDP和TCP的區別
- 二、UDP編寫服務器的步驟
- 三、UDP編寫客戶端的步驟
- 四、TCP編寫服務器的步驟
- 五、TCP編寫客戶端的步驟
一:UDP和TCP的區別
- 1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
- 2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,通常情況下是無差錯,不丟失,不重復,且按序到達的,(注意,這里的可靠是在通常情況下,在非通常情況下,TCP傳送數據并不是不是100%,比如把網線拔了,數據就無法到達,所以TCP的可靠指發送數據后,會收到有一個確認的信號);UDP盡最大努力交付,即不保 證可靠交付,也就是得不到具體的回復,不知道數據是否到達或者沒有到達。
- 3、TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的。UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)
- 4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
- 5、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
- 6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道
二、UDP編寫服務器的步驟
- 1、創建一個socket,用函數socket();
- 2、綁定IP地址、端口等信息到socket上,用函數bind();
- 3、循環接收數據,用函數recvfrom();
- 4.把服務器處理的數據發送給客戶端sendto()
- 5、關閉網絡連接,斷開鏈接;
三、UDP編寫客戶端的步驟
- 1、創建一個socket,用函數socket();
- 2、客戶端一般不需要bind(),讓操作系統內核隨機分配一個端口號給客戶端使用,因為在通常情況下,一個端口只能被一個進程bind(),此時如果客戶端bind(),并且如果有其他客戶端同樣bind()到同一個端口號,就會出錯
- 3、發送數據,用函數sendto();
- 4、接收服務器端發送回來的結果,recvfrom()
- 5、關閉網絡連接;
四、TCP編寫服務器的步驟
- 1、創建一個socket,用函數socket();
-
2、設置socket屬性,用函數setsockopt(); * 可選
-
3、綁定IP地址、端口等信息到socket上,用函數bind();
- 4、開啟監聽,用函數listen();
- 5、接收客戶端上來的連接,用函數accept();
- 6、收發數據,用函數send()和recv(),或者read()和write();
-
7、關閉網絡連接;
-
8、關閉監聽;
五、TCP編寫客戶端的步驟
- 1、創建一個socket,用函數socket();
-
2、設置要連接的對方的IP地址和端口等屬性;
-
3、連接服務器,用函數connect();
- 4、收發數據,用函數send()和recv(),或者read()和write();
- 5、關閉網絡連接;
總結
以上是生活随笔為你收集整理的Linux下编写UDP/TCP版本的服务器和客户端的流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中多态(二)
- 下一篇: Linux中的基础IO(一)