UDP網路程式設計套接字

2021-08-20 06:50:33 字數 2471 閱讀 5976

ip協議有兩個版本,乙個是ipv4,乙個是ipv6。

ip位址是在ip協議中,用來標識網路中不同的主機的位址。

對於ipv4來說,ip位址是乙個4位元組,32位的整數。

在資料報頭部的兩個ip位址,乙個叫源ip位址,乙個叫目的ip位址

埠號port(必須是眾所周知的,並且不能隨意修改):

埠號是乙個2個位元組,16位的整數

埠號用來標識乙個程序,告訴作業系統,當前的這個資料要交給那個程序來處理

源埠號和目的埠號:

可以基本理解為「誰發的,要發給誰」。

認識udp:

傳輸層協議、無連線、不可靠傳輸、面向資料報

網路位元組序列:

記憶體中多位元組資料相對於記憶體位址有大小端之分,網路資料流同樣具有大小端之分。

傳送主機通常將傳送緩衝區的資料按照記憶體位址從低脂高順修發出,

接受主機把從網路上接收到的位元組依次儲存在接收快取區中,也是按照記憶體位址從低到高的順修儲存,

因此,網路資料流的位址因該這樣規定,先發的資料應該是低位址,後發的資料應該是高位址,

tcp/ip協議規定,網路資料流應該採用大端自己序列,即低位址高位元組。

int socket(int domain, int type, int protocol);
1.建立socket檔案描述符

int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
2. 繫結埠號

int listen(int s, int backlog);
3.開始監聽

int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
4.接收請求

int connect(int sockfd, const struct sockaddr *addr,

socklen_t addrlen);

5.建立鏈結

sockaddr 結構

ipv4和ipv6的位址格式定義在netinet.h中ipv4用結構體sockaddr_in表示,

ipv4和ipv6的位址型別分別定義為常數af_inet,af_inet6,這樣只要取得了sockaddr結構體的首位址,不需要知道具體是哪一種型別的sockadr結構體,就可以根據位址型別字段確定結構體的內容。

以下是乙個簡單的udp伺服器。

//伺服器

#include#include#include#include#include#include#include#include#define size 128

本地環迴 用於測試本地網路

//netstat -nlp 顯示網路介面 比如ssh

void service(int sock)

}}int main(int argc,char *argv)

int sock = socket(af_inet,sock_dgram,0);

if(sock<0)

struct sockaddr_in local;

local.sin_family = af_inet;

local.sin_port = htons(atoi(argv[2]));

local.sin_addr.s_addr = inet_addr(argv[1]);

if(bind(sock,(struct sockaddr*)&local,sizeof(local))<0)

service(sock);

close(sock);

return 0;

}

//客戶端

#include#include#include#include#include#include#include#includeint main(int argc,char* argv)

int sock = socket(af_inet,sock_dgram,0);

if(sock<0)

char buf[128];

struct sockaddr_in server;

server.sin_family = af_inet;

server.sin_port = htons(atoi(argv[2]));

server.sin_addr.s_addr = inet_addr(argv[1]);

socklen_t len = sizeof(server);

while(1)}}

close(sock);

return 0;

}

UDP套接字程式設計

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

UDP套接字程式設計

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

網路程式設計套接字一 UDP網路程式

一 ip位址和埠號 1 ip位址 ip協議有兩個版本,ipv4和ipv6。ip位址是在ip協議中,用來標識網路中不同主機的位址 對於ipv4來說,ip位址是乙個4位元組,32位的整數 我們通常也使用 點分十進位制 的字串表示ip位址,例如 192.168.0.1 用點分割的每乙個數字表示乙個位元組,...