服务器端代码:
#include"mylib.h"
int main(int argc,char *argv[])
{
int sockfd;
struct sockaddr_in server,client;
char buf[100],read_buf[100];
unsigned int len,length;
time_t timep;
int rv;
bzero(read_buf,100);
sockfd = socket(AF_INET,SOCK_DGRAM,0);
if(sockfd<0)
{
perror("Creat socket fail\n");
return -1;
}
bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(10000);
server.sin_addr.s_addr = htonl(INADDR_ANY);
len = sizeof(struct sockaddr);
if(bind(sockfd,(struct sockaddr*)(&server),len)<0)
{
perror("bind error\n");
return -2;
}
while(1)
{
//length:client地址长度
//rv:接收到client发过来的字节数
rv = recvfrom(sockfd,read_buf,100,0,
(struct sockaddr*)(&client),&length);
if(rv<0)
{
perror("recvfrom error\n");
close(sockfd);
return -3;
}
printf("len:%d\n",rv);
printf("sockfd = %d\n",sockfd);
printf("IP:%s,Port:%d\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port));
printf("read_buf = %s\n",read_buf);
timep = time(NULL);
snprintf(buf,sizeof(buf),"%s",ctime(&timep));
sendto(sockfd,buf,strlen(buf),0,
(struct sockaddr *)&client,length);
bzero(&client,length);
bzero(buf,100);
bzero(read_buf,100);
}
close(sockfd);
return 0;
}
客户端代码:
#include"mylib.h"
int main(int argc,char *argv[])
{
int sockfd;
struct sockaddr_in server,ser;
char buf[100] = "Hello,UDP!\n";
char read_buf[100];
unsigned int length,len;
time_t timep;
int rv;
bzero(read_buf,100);
sockfd = socket(AF_INET,SOCK_DGRAM,0);
if(sockfd<0)
{
perror("Creat socket fail\n");
return -1;
}
bzero(&server,sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(10000);
inet_pton(AF_INET,"127.0.0.1",&server.sin_addr.s_addr);
length = sizeof(struct sockaddr_in);
sendto(sockfd,buf,strlen(buf),0,
(struct sockaddr*)&server,length);
rv = recvfrom(sockfd,read_buf,100,0,
(struct sockaddr*)(&ser),&len);
if(rv<0)
{
perror("recvfrom error\n");
close(sockfd);
return -2;
}
printf("len:%d\n",rv);
printf("sockfd = %d\n",sockfd);
printf("IP:%s,Port:%d\n",inet_ntoa(ser.sin_addr),ntohs(ser.sin_port));
printf("read_buf = %s\n",read_buf);
bzero(&ser,len);
bzero(buf,100);
bzero(read_buf,100);
close(sockfd);
return 0;
}
实验结果: