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;
}
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人