網路 簡單的UDP網路程式

2021-10-22 23:29:45 字數 2411 閱讀 1164

udp網路程式設計的小前提

其大致流程如下:

udp伺服器和客戶端實現需要的標頭檔案

#include

#include

#include

主要分為以下4個板塊:

服務端:(server)

#include

#include

#include

#include

#include

#include

#include

intmain()

//繫結位址資訊

struct sockaddr_in addr;

addr.sin_family = af_inet;

addr.sin_addr.s_addr =

inet_addr

("0.0.0.0");

//ip

addr.sin_port =

htons

(19999);

int ret =

bind

(sockfd,

(struct sockaddr*

)&addr,

sizeof

(addr));

if(ret <0)

while(1

);struct sockaddr_in peer_addr;

socklen_t peer_addr_len =

sizeof

(peer_addr)

; ssize_t recv_size =

recvfrom

(sockfd, buf,

sizeof

(buf)-1

,0,(

struct sockaddr*

)&peer_addr,

&peer_addr_len);if

(recv_size <0)

printf

("cli say: %s\n"

, buf)

;//1.已經擁有了傳送方的位址資訊結構和位址首席資訊官度

//2.組織要返回給傳送方的資料,並且呼叫sendto

std::string s;

std::cin >> s;

ssize_t send_size =

sendto

(sockfd, s.

c_str()

, s.

size()

,0,(

struct sockaddr*

)&peer_addr, peer_addr_len);if

(send_size <0)

}close

(sockfd);//

return0;

}

svr:svr.cpp

g++ $^

-o $@ -g

客戶端(client):

#include

#include

#include

#include

#include

#include

#include

intmain()

//服務端的位址資訊結構 包括服務端的ip和port

struct sockaddr_in svr_addr;

svr_addr.sin_family = af_inet;

svr_addr.sin_port =

htons

(19999

);

svr_addr.sin_addr.s_addr =

inet_addr

("0.0.0.0");

while(1

)char buf[

1024]=

;struct sockaddr_in peer_addr;

socklen_t peer_addr_len =

sizeof

(peer_addr)

; ssize_t recv_size =

recvfrom

(sockfd, buf,

sizeof

(buf)-1

,0,null

,null);

if(recv_size <0)

printf

("svr say: %s\n"

, buf);}

close

(sockfd);//

return0;

}

cli:cli.cpp

g++ $^

-o $@ -g

網路程式設計套接字(3) 簡單的UDP網路程式

include include include include include includevoid service int sock int main int argc,char argv int sock socket af inet,sock dgram,0 if sock 0 struct...

UDP網路延遲測試程式

乙太網 ethernet 資料幀的長度必須在 46 1500 位元組之間 這是由乙太網的物理特性決定的 這個 1500 位元組被稱為鏈路層的 mtu 最大傳輸單元 但這並不是指鏈路層的長度被限制在 1500位元組,其實這這個 mtu指的是鏈路層的資料區 並不包括鏈路層的首部和尾部的 18個位元組.因...

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

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