一、socket概述
1.socket一般被稱為「套接字」,網路上的兩個程式通過乙個雙向的通訊連線實現資料的交換,這個連線的一端就叫做socket。
2.建立網路通訊連線至少需要乙個埠號(socket),socket利用網路之間的通訊設施實現程序通訊,但它對通訊設施的細節不關心,只要通訊設施能夠提供足夠的通訊能力,就可以實現通訊。
例子:假如你想給你乙個人打**,首先你得有一部**機,這個**機就相當於申請了乙個socket;同時你也要知道對方的**號碼,就相當於對方也有了乙個固定的socket;然後你撥號呼叫對方,相當socket發出連線請求,如果對方在並且空閒,就會接起**,雙方就可以正式通話,相當於連線成功;雙方通話的這個過程,就相當於向socket傳送資料和從socket接收資料的過程。
3. socket常用函式
網路連線函式:① socket():建立套接字;
② bind():繫結本機埠;
③ connect():與埠建立連線;
④ listen():監聽埠是否有資料請求過來;
⑤ accept():接受資料的請求連線;
⑥ recvfrom() :資料接受;
⑦ send,sendto():資料傳送;
⑧ close():關閉套接字。
4.socket程式設計步驟
(1)伺服器端步驟
①使用socket()函式載入套接字型檔,建立套接字;
②使用bind()函式來繫結套接字到乙個ip位址和乙個埠上;
③使用listen()函式將套接字設定為監聽模式,等待連線請求;
④用accept()函式接受連線請求,返回乙個新的對應於連線的套接字;
⑤用send()/sendto()函式返回的套接字和客戶端進行通訊;
⑥返回到第三步,等待另乙個請求;
⑦用closesocket()函式關閉套接字。
(2)客戶端步驟
①使用socket()函式
載入套接字型檔,建立套接字
;②使用connect()函式向伺服器發出連線請求;
③用send()/recv()函式與伺服器端進行通訊;
④通訊完成後,用closesocket()函式關閉套接字。
二、udp協議
1. udp
是userdatagram protocol
的簡稱,中文名是使用者資料報協議,在網路中它與
tcp協議一樣用於處理資料報,是一種無連線的協議。它不與對方建立連線,而是直接就把資料報傳送過去。
2. udp
協議是面向非連線的協議,沒有建立連線的過程,所以它的通訊效率高;也正因為如此,它的可靠性不如
tcp協議高。u
dp只適用於一次只傳送少量資料、對可靠性要求不高的應用環境,一次只能傳送的資料不能超過64kb 。
3.udp協議流程圖
伺服器端
因為udp是無連線的 ,所以伺服器端並不需要listen()函式和accept()函式。
4. udp協議的優點
udp套介面是無連線的,不可靠的資料報協議,既然它是不可靠的,為什麼還要用呢?我總結以下三點:
(1)udp協議支援廣播或多播;
(2)因為它是無連線的,所以處理速度快;
(3)可以設定超時防止對方無限等待。
三、qt實現
1. 頁面的搭建
伺服器端和客戶端的頁面是一樣的,都是由輸入款、輸出框和傳送按鈕三部分組成的。
2. 伺服器端**實現
#include"mainwindow.h"
#include"ui_mainwindow.h"
#include
mainwindow::mainwindow(qwidget*parent):
qmainwindow(parent),
ui(newui::mainwindow)
mainwindow::~mainwindow()
voidmainwindow::recv()
}
void2. 客戶端**實現mainwindow::on_pushbutton_clicked()
#include"mainwindow.h"
#include"ui_mainwindow.h"
#include
#include
mainwindow::mainwindow(qwidget*parent):
qmainwindow(parent),
ui(newui::mainwindow)
mainwindow::~mainwindow()
voidmainwindow::on_pushbutton_clicked()
voidmainwindow::recv()
}3. 功能實現
在客戶端的輸入框輸入hello world,在伺服器端的輸出框就接收到了hello world,同樣也可以在伺服器上的輸入端給客戶端傳送資料,兩個是互通的。
四、總結
通過這次對socket程式設計的學習,我對socket程式設計有了乙個大致的,初步實現了udp形式的客戶端與伺服器端的通訊。在實現功能的時候,我總結了必須要掌握的以下幾點知識:
(1)清楚地掌握socket程式設計步驟;
(2)掌握udp協議的原理和實現步驟;
(3)能夠區分在無連線udp方式下和有連線方式tcp下的socket程式設計;
(4)掌握qt開發軟體的使用。
基於UDP協議的socket程式設計
udp協議特點 1.無連線。服務端與客戶端傳輸資料之前不需要進行連線,且沒有超時重發等機制,只是把資料通過網路傳送出去。也正是因為此特點,所以基於udp協議的socket的客戶端在啟動之前不需要先啟動服務端。2.不可靠。資料在本地通過網路發出之後,udp協議會立即清除本地的快取,即使對方沒有收到該資...
基於Socket的UDP和TCP協議
一 概述 tcp 傳輸控制協議 和udp 使用者資料報協議 是網路體系結構tcp ip模型中傳輸層一層中的兩個不同的通訊協議。tcp 傳輸控制協議,一種面向連線的協議,給使用者程序提供可靠的全雙工的位元組流,tcp套介面是位元組流套介面 stream socket 的一種。udp 使用者資料報協議。...
基於UDP協議的Socket網路程式設計
一 基於udp協議的socket網路程式設計流程 採用 udp 套接字方式實現c s的通訊程式由客戶端和伺服器端兩部分組成。伺服器端程序依次按以下步驟進行 1 呼叫socket 建立乙個資料報套接字 2 呼叫 bind 把伺服器位址繫結在該套接字上 3 呼叫recvform 等待客戶程序發來的請求,...