資料報通訊;對於資料報通訊的伺服器端來說,它不必再在乙個埠上偵聽,以等待建立連線,而只需生成乙個埠描述符,並且把這個埠描述符繫結到本地位址上就可以了。
udp網路程式設計具體的操作流程為:
使用系統呼叫socket()來獲得檔案描述符,該呼叫的宣告格式為:
connect()系統呼叫由客戶端呼叫,它的用法如下:
可以使用close()呼叫關閉連線的套介面檔案描述符,它的呼叫方式為:
close(sockfd);
//這樣以後就不能再對此套介面進行任何的讀/寫操作了。
//使用系統呼叫shutdown(),可有更多的控制權
intshutdown(int sockfd, int how);
int shutdown(int sockfd, int how)udp伺服器端的程式:
/*udpserver.c*/
#include
#include
#include
#include
#include
#define server_port 8888//繫結埠
#define max_msg_size 1024//資料最大位元組為1024
void udps_respon(int sockfd)
}int main(void)
bzero(&addr,sizeof(struct sockaddr_in));
addr.sin_family = af_inet;
addr.sin_addr.s_addr = htonl(inaddr_any);
addr.sin_port = htons(server_port);
if(bind(sockfd,(struct sockaddr*)&addr,sizeof(struct sockaddr_in))<0)
udps_respon(sockfd);
close(sockfd);
}
udp客戶端的程式:
/*客戶端程式udpclient.c,使用方法udpclient serverip serverport*/
#include
#include
#include
#include
#include
#include
#define max_buf_size 1024
void udpc_requ(int sockfd,const
struct sockaddr_in *addr,int len)
}int main(int argc,char **argv)
if((port = atoi(argv[2]))<0)
sockfd = socket(af_inet,sock_dgram,0);
if(sockfd<0)
/*填充服務端的資料*/
bzero(&addr,sizeof(struct sockaddr_in));
addr.sin_family = af_inet;
addr.sin_port = htons(port);
if(inet_aton(argv[1],&addr.sin_addr)<0)
udpc_requ(sockfd,&addr,sizeof(struct sockaddr_in));
close(sockfd);
}
在linux上執行,我的伺服器是centos無圖形化介面的:
在客戶端輸入:「123456789」
伺服器端顯示:「123456789」
電腦端開啟tcp/udp測試軟體輸入:「987654321」
伺服器端顯示:「987654321」
完美!
linux網路程式設計 udp
udp udp收發 udp 協議不需要建立連線,類似於傳送簡訊,因此 udp 的程式設計方式比 tcp 更加簡單。udp 有其自己特有的接受與傳送資料的函式 socket af inet,sock dgram,0 建立socket bind socket fd,struct sockaddr ser...
Linux網路程式設計 UDP程式設計例項
使用udp協議通訊時伺服器端和客戶端無需建立連線,只要知道對方套接字的位址資訊,就可以傳送資料。伺服器端只需建立乙個套接字用於接收不同客戶端發來的請求,經過處理後再把結果傳送給對應的客戶端。伺服器端和客戶端使用udp的流程如下圖示 伺服器端 server.c include include incl...
Linux 網路程式設計之UDP
1.介紹 udp協議是無連線的,不可靠傳輸的協議.伺服器與客戶端的互動不需要建立連線,沒有流量控制的功能。與tcp一樣,它也是傳輸層協議,通訊過程中需要ip位址與埠號。使用udp進行程式設計包括伺服器與客戶端,下面介紹一下伺服器與客戶端的通訊流程 伺服器流程 1 建立伺服器套接字描socket 2 ...