1、客户端代码
创建一个套接字
设置服务器地址
使用sendto向服务器端或接收端发送数据
使用recv接受数据
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41#include <sys/un.h> #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <stdlib.h> #include <netinet/in.h> #include <arpa/inet.h> #include <errno.h> #define BUFF_SIZE 1024 int main(void){ int sockfd; struct sockaddr_in server_addr; int ret; int c; char buff[BUFF_SIZE]; //创建一个套接字 sockfd=socket(AF_INET,SOCK_DGRAM,0); //设置服务器地址 server_addr.sin_family=AF_INET; server_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); server_addr.sin_port=htons(9000); //向服务器发送数据 strcpy(buff,"hello world"); ret=sendto(sockfd,buff,strlen(buff)+1,0,(struct sockaddr*)&server_addr,sizeof(server_addr)); if(ret==-1){ perror("sendto"); exit(errno); } printf("ret=%dn",ret); return 0; }
2、服务器端
创建网络套接字
设置服务器地址
绑定该套接字,使得套接字和对应的端口相关联
循环处理客户端请求
使用recvfrom等待接收客户端发送的数据
使用sendto发送数据至客户端
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63#include <sys/un.h> #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <stdlib.h> #include <netinet/in.h> #include <arpa/inet.h> #include <errno.h> #define BUFF_SIZE 1024 int main(void){ int server_sockfd; int client_sockfd; char ch; int ret; int recv_len; char buff[BUFF_SIZE]; //用来UNIx系统内部通信的地址,struct sockaddr_un struct sockaddr_in server_addr; struct sockaddr_in client_addr; int client_addr_len=sizeof(struct sockaddr_in); server_sockfd=socket(AF_INET,SOCK_DGRAM,0); //设置服务器地址 server_addr.sin_family=AF_INET; //地址的域,相当于地址的类型, //AF_UNIX表示地址位于UNIX系统内部 server_addr.sin_addr.s_addr=INADDR_ANY; //inet_addr("10.10.0.9"); server_addr.sin_port=htons(9000); //绑定套接字,使得该套接字和对应的系统套接字文件相关联 ret=bind(server_sockfd,(struct sockaddr*)&server_addr,sizeof(server_addr)); if(ret==-1){ perror("bind"); exit(1); } //创建套接字队列,保存进入该服务器的客户端请求 //ret=listen(server_sockfd,5); //循环处理客户端请求 while(1){ printf("server waitingn"); //等待并接受客户端请求 //client_sockfd=accept(server_sockfd,(struct sockaddr*)&client_addr,&client_addr_len); recv_len=recvfrom(server_sockfd,buff,sizeof(buff),0,(struct sockaddr*)&client_addr,&client_addr_len); if(recv_len<0){ perror("recvfrom"); exit(errno); } printf("received:%sn",buff); } close(server_sockfd); return 0; }
最后
以上就是美好钥匙最近收集整理的关于UDP通信代码的全部内容,更多相关UDP通信代码内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复