UDP客户端服务端通信
服务端 udp_server.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
int main(){
//创建用于通信的socket
int fd = socket(PF_INET,SOCK_DGRAM,0);
if(fd == -1){
perror("socket");
exit(-1);
}
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(9999);
addr.sin_addr.s_addr = INADDR_ANY;
//绑定
int ret = bind(fd,(struct sockaddr*)&addr,sizeof(addr));
if(ret == -1){
perror("bind");
exit(-1);
}
//通信
while(1){
//接受数据
char recvbuf[1024] = {0};
char cIp[128];
struct sockaddr_in caddr;
int len = sizeof(caddr);
recvfrom(fd,recvbuf,sizeof(recvbuf),0,(struct sockaddr *)&caddr,&len);
printf("cliet IP : %s, Port : %d\n",
inet_ntop(AF_INET,&caddr.sin_addr.s_addr,cIp,sizeof(cIp)),
ntohs(caddr.sin_port));
printf("client say : %s\n",recvbuf);
//发送数据
sendto(fd,recvbuf,sizeof(recvbuf),0,(struct sockaddr *)&caddr,sizeof(caddr));
}
close(fd);
return 0;
}
客户端 udp_client.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
int main(){
//创建用于通信的socket
int fd = socket(PF_INET,SOCK_DGRAM,0);
if(fd == -1){
perror("socket");
exit(-1);
}
struct sockaddr_in saddr;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(9999);
inet_pton(AF_INET,"192.168.245.128",&saddr.sin_addr.s_addr);
int i = 0;
//通信
while(1){
//发送数据
char sendBuf[128];
sprintf(sendBuf,"hello i am client, i = %d\n",i++);
sendto(fd,sendBuf,sizeof(sendBuf),0,(struct sockaddr *)&saddr,sizeof(saddr));
//接受数据
recvfrom(fd,sendBuf,sizeof(sendBuf),0,NULL,NULL);
printf("server say : %s\n",sendBuf);
sleep(1);
}
close(fd);
return 0;
}
运行结果



浙公网安备 33010602011771号