網路套接字程式設計介紹 UDP通訊

2022-03-10 04:48:10 字數 2099 閱讀 6375

知識內容:

1.udp通訊程式設計流程

2.套接字介面介紹

一、udp通訊程式設計

1.建立套接字

>>在核心中建立乙個socket結構體,返回乙個檔案描述符作為操作控制代碼,用於使程序與網絡卡之間建立聯絡

2.為套接字繫結位址資訊

>>在核心的socket結構體中新增描述資訊(位址資訊),告訴作業系統自己使用了哪個位址和埠,作業系統收到發往這個位址和埠的資料之後,則放入這個socket的接收緩衝區中(將這個對應的資料交給這個程序去做)

3.傳送資料資訊

>>將資料拷貝到核心中的socket傳送緩衝區中(作業系統會取出資料進行層層協議封裝,將其傳送出去)

4.接收資料

>>程序通過操作控制代碼從核心的socket接收緩衝區中取出已經接收到的資料(作業系統已經完成了傳輸層以下的資料分用)

5.關閉套接字

>>關閉套接字,釋放呼叫的資源

二、套接字介面介紹

1.建立套接字

int socket (int domain, int type, int protocol);

type:套接字型別< 流式套接字 / 資料報套接字 >

流式套接字:有序的,可靠的,雙向的,基於連線的位元組流傳輸---sock_stream

資料報套接字:無連線,不可靠,有最大長度限制的傳輸---sock_dgram

protocol:使用的協議,0---不同套接字型別下的預設協議,

流式套接字---tcp---ippoto_tcp

資料報套接字---udp---ippoto_udp

返回值:返回套接字的操作控制代碼,即檔案描述符

2.為套接字繫結位址資訊

int bind (int sockfd, strcut sockaddr* addr, socklen_t len);

sockfd:建立套接字時返回的操作控制代碼(檔案描述符)

len:位址資訊的長度

返回值:成功返回0,失敗返回-1

3.傳送資料

int sendto(int sockfd, char* data, int data_len, int flag,

struct sockaddr* dest_addr,

socklen_t addr_len);

sockfd:建立套接字時返回的操作控制代碼(檔案描述符)

data_len:要傳送資料的長度

flag:選項引數,一般預設選0,表示當前操作為阻塞操作;msg_dontwait--當前操作為非阻塞操作

若發生資料時,socket傳送緩衝區已經滿了,則0預設阻塞等待,msg_dontwait立即返回報錯

返回值:成功返回實際傳送資料的資料位元組數,失敗返回-1

4.接收資料

int revcfrom(int sockfd, char* buf, int len, int flag,

struct sockaddr* src_addr, socklen_t addr_len);

sockfd:建立套接字時返回的操作控制代碼(檔案描述符)

buf:使用者態緩衝區的首位址,用於存放接收到的資料,從核心socket,接收緩衝區中取出資料放入 這個buf使用者緩衝區中

len:使用者想要讀取的資料長度,但是不能大於buf緩衝區的長度

flag:選項引數,一般預設選0,表示當前操作為阻塞操作;msg_dontwait--當前操作為非阻塞操作

src_addr:接收到資料的傳送端位址(服務端位址),

addr_len:輸入輸出型引數,用於指定想要獲取多長的位址資訊;獲取位址之後,用於返回位址資訊 的實際長度

返回值:成功返回實際接收到資料的資料位元組長度,失敗返回-1

5.關閉套接字

int close (int fd);

UDP網路程式設計套接字

ip協議有兩個版本,乙個是ipv4,乙個是ipv6。ip位址是在ip協議中,用來標識網路中不同的主機的位址。對於ipv4來說,ip位址是乙個4位元組,32位的整數。在資料報頭部的兩個ip位址,乙個叫源ip位址,乙個叫目的ip位址 埠號port 必須是眾所周知的,並且不能隨意修改 埠號是乙個2個位元組...

UDP套接字程式設計

與面向連線的協議相比,面向無連線協議極為不同。其中乙個重要的不同點就是客戶端與伺服器之間不必建立連線。對於udp套接字程式設計而言,伺服器建立套接字後,呼叫bind 函式將套接字與準備接收資料的介面繫結在一起。和tcp程式設計不同的是,應用程式不必呼叫listen 和accept 函式等待客戶端的連...

UDP套接字程式設計

udp是使用者資料報協議,與tcp協議一樣,在網路中處理資料報,是一種無連線的傳輸層協議,具有不可靠性,udp有不提供資料報分組 組裝和不能對資料報進行排序的缺點,也就是說,當報文傳送之後,是無法得知其是否安全完整到達的。基於udp的客戶端伺服器 伺服器 include include includ...