/*
5 UDP的网络传输服务端程序-------简单的聊天服务端程序
6 1、创建socket
7 2、为套接字绑定地址信息
8 3、数据传输
9 4、关闭socket
10 */
11 #include<unistd.h>
12 #include<errno.h>
13 #include<sys/socket.h>
14 #include<stdio.h>
15 #include<sys/socket.h>
16 #include<netinet/in.h>
17 #include<arpa/inet.h>
18 #include<string.h>
19 #include<stdlib.h>
20
21 int main(){
22 //1、创建套接字
23 int sockfd=-1;
24 sockfd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);//三个参数信息:domain协议域;流式套接字(TCP协议 //);协议类型;
25 if(sockfd<0){
26 perror("socket");
perror("socket");
27 return -1;
28 }
29 struct sockaddr_in addr;//IPv4版本的地址信息:struct sockaddr_in
30 addr.sin_family=AF_INET;
31 addr.sin_port=htons(9000);//使用网络字节序
32 addr.sin_addr.s_addr=inet_addr("192.168.231.128");
33
34 //2、绑定
35 socklen_t len=sizeof(struct sockaddr_in);//易出错,如:sockaddr_in*是指针,长度为八个字节
36 int ret=bind(sockfd,(struct sockaddr*)&addr,len);
37 if(ret!=0){
38 perror("bind");
39 return -1;
40 }
41 //3、数据传输
42 while(1){
43 //1、接收客户端数据
44 char buff[1024]={0};
45 struct sockaddr_in cli_addr;
46
47 recvfrom(sockfd,buff,1023,0,(struct sockaddr*)&cli_addr,&len);
48
50 printf( " say:%s\n",buff);
51
52 //2、向客户端回复信息
53 char tmp[1024]={0};
54 printf("you say:");
55 scanf("%s",tmp);
56 len=sizeof(struct sockaddr_in);//易出错,如:sockaddr_in*是指针,长度为八个字节
57 sendto(sockfd,tmp,strlen(tmp),0,(struct sockaddr*)&cli_addr,len);
58 }
//关闭socket
59 close(sockfd);
60 return 0;
61 }
4 /*
5 UDP的网络传输客户端程序-------简单的聊天客户端程序
6 1、创建socket
7
8 2、数据传输
9 3、关闭socket
10 */
11 #include<unistd.h>
12 #include<errno.h>
13 #include<sys/socket.h>
14 #include<stdio.h>
15 #include<sys/socket.h>
16 #include<netinet/in.h>
17 #include<arpa/inet.h>
18 #include<string.h>
19 #include<stdlib.h>
20
21 int main(){
22 //1、创建套接字
23 int sockfd=-1;
24 sockfd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
25 if(sockfd<0){
26 perror("socket");
27 return -1;
28 }
29 struct sockaddr_in serv_addr;
30 serv_addr.sin_family=AF_INET;
31 serv_addr.sin_port=htons(9000);//使用网络字节序
32 serv_addr.sin_addr.s_addr=inet_addr("192.168.231.128");
33
34 socklen_t len=sizeof(struct sockaddr_in);//易出错,如:sockaddr_in*是指针,长度为八个字节
41 //2、数据传输
42 char buff[1024]={0};
43 struct sockaddr_in cli_addr;
44 while(1){
45 //1/向服务端发送信息
46
47
48 printf("you ssay:\n");
49 char tmp[1024]={0};
50 scanf("%s",tmp);
51 sendto(sockfd,tmp,strlen(tmp),0,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
52 //2、接收服务端信息
53 ssize_t _s=recvfrom(sockfd,buff,1023,0,(struct sockaddr*)&cli_addr,&len);
54 if(_s>0){
55 buff[_s]=0;
56 printf("%s\n",buff);
57 }
58 }
//关闭socket
59 close(sockfd);
60 return 0;
61 }