客户端udp_client.c
/*===============================================
* 文件名称:udp_client.c
* 创 建 者:
* 创建日期:2022年09月05日
* 描 述:
================================================*/
#include <stdio.h>
#include <sys/types.h> /* See NOTES*/
#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#define SIZE 64
int main(int argc, char *argv[])
{
char buf[SIZE]={0};
int sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(-1==sockfd)
{
perror("socket");
return -1;
}
struct sockaddr_in saddr;//服务器的ip和port
bzero(&saddr,sizeof(saddr));
saddr.sin_family=AF_INET;//ipv4协议
saddr.sin_port=htons(8888);//5001~65535 服务器的端口号
saddr.sin_addr.s_addr=inet_addr("192.168.31.122");//服务器的ip地址
struct sockaddr_in addr;//接收方的信息
bzero(&addr,sizeof(addr));
socklen_t len =sizeof(addr);
do{
fgets(buf,sizeof(buf),stdin);
int ret =sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr*)&saddr,sizeof(saddr));//发送数据
if(ret==-1)
{
perror("sendto");
close (sockfd);
return -1;
}
printf("..........sendto............\n");
bzero(buf,sizeof(buf));
ret= recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr*)&addr,&len);
if(-1==ret)
{
perror("recvfrom");
return -1;
}
printf("IP:%s port:%u\n",inet_ntoa(addr.sin_addr),ntohs(addr.sin_port));
puts(buf);
}
while(strncmp(buf,"quit",4)!=0);
close (sockfd);
/*
recvfrom();
sendto();*/
return 0;
}
服务器 udp_server.c
/*===============================================
* 文件名称:udp_server.c
* 创 建 者:
* 创建日期:2022年09月05日
* 描 述:
================================================*/
#include <stdio.h>
#include <sys/types.h> /* See NOTES*/
#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#define SIZE 64
int main(int argc, char *argv[])
{
char buf[SIZE]={0};
int sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(-1==sockfd)
{
perror("socket");
return -1;
}
struct sockaddr_in saddr;//服务器的ip和port
bzero(&saddr,sizeof(saddr));
saddr.sin_family=AF_INET;//ipv4协议
saddr.sin_port=htons(8888);//5001~65535 服务器的端口号
saddr.sin_addr.s_addr=inet_addr("192.168.31.122");//服务器的ip地址
int ret=bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));
if(-1==ret)
{
perror("bind");
return -1;
}
printf("bind success!\n");
struct sockaddr_in addr;//接收方的信息
bzero(&addr,sizeof(addr));
socklen_t len =sizeof(addr);
do{
bzero(buf,sizeof(buf));
ret =recvfrom (sockfd,buf,sizeof(buf),0,(struct sockaddr*)&addr,&len);//接受数据
if(ret==-1)
{
perror("recvfrom");
close (sockfd);
return -1;
}
printf("接收信息:%s\n",buf);
printf("..................recvfrom.............\n");
ret=sendto (sockfd,buf,sizeof(buf),0,(struct sockaddr*)&addr,sizeof(addr));
if(-1==ret)
{
perror("sendto");
return -1;
}
printf("IP:%s port:%u\n",inet_ntoa(addr.sin_addr),ntohs(addr.sin_port));
}
while(strncmp(buf,"quit",4)!=0);
close(sockfd);
return 0;
}
运行及结果: