udp網路程式設計的小前提
其大致流程如下:
udp伺服器和客戶端實現需要的標頭檔案
#include主要分為以下4個板塊:#include
#include
服務端:(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 用點分割的每乙個數字表示乙個位元組,...