客户端代码:
#include"common.h"
struct stu
{
int id;
char name[32];
};
int main()
{
int fd,ret,saddr_len;
char buf[1024];
struct stu s;
struct sockaddr_in saddr;
saddr.sin_family=AF_INET;
saddr.sin_port=htons(8888);
saddr.sin_addr.s_addr=inet_addr("127.0.0.1");
fd=socket(AF_INET,SOCK_DGRAM,0);
if(fd<0)
{
perror("sock create");
return -1;
}
while(1)
{
printf("pleace input stu data\n");
scanf("%d %s",&s.id,s.name);
saddr_len=sizeof(saddr);
ret=sendto(fd,&s,sizeof(struct stu),0,(struct sockaddr*)&saddr,sizeof(saddr));
if(ret<0)
{
printf("sendto error\n");
return -1;
}
else
{
printf("sendto success\n");
}
}
close(fd);
return 0;
}
服务端代码:
#include"common.h"
struct stu
{
int id;
char name[32];
};
int main()
{
int fd,ret,saddr_len;
char buf[1024];
struct sockaddr_in saddr;
struct stu s;
saddr.sin_family=AF_INET;
saddr.sin_port=htons(8888);
saddr.sin_addr.s_addr=inet_addr("127.0.0.1");
fd=socket(AF_INET,SOCK_DGRAM,0);
if(fd<0)
{
perror("sock create");
return -1;
}
ret=bind(fd,(struct sockaddr*)&saddr,sizeof(saddr));
if(ret<0)
{
perror("bind");
close(fd);
return -1;
}
while(1)
{
saddr_len=sizeof(saddr);
ret=recvfrom(fd,&s,sizeof(struct stu),0,(struct sockaddr*)&saddr,&saddr_len);
if(ret<0)
{
printf("recvfrom error\n");
return -1;
}
else
{
printf("recvfrom success\n");
printf("id:%d name:%s\n",s.id,s.name);
}
}
close(fd);
return 0;
}
相比较tcp来说 代码简单不少 他们的区别:TCP提供一种面向连接的、可靠的字节流服务;UDP是无连接的、不可靠的数据协议报。