概述
1、客户端代码
创建一个套接字
设置服务器地址
使用sendto向服务器端或接收端发送数据
使用recv接受数据
#include <sys/un.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#define BUFF_SIZE 1024
int main(void){
int sockfd;
struct sockaddr_in server_addr;
int ret;
int c;
char buff[BUFF_SIZE];
//创建一个套接字
sockfd=socket(AF_INET,SOCK_DGRAM,0);
//设置服务器地址
server_addr.sin_family=AF_INET;
server_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
server_addr.sin_port=htons(9000);
//向服务器发送数据
strcpy(buff,"hello world");
ret=sendto(sockfd,buff,strlen(buff)+1,0,(struct sockaddr*)&server_addr,sizeof(server_addr));
if(ret==-1){
perror("sendto");
exit(errno);
}
printf("ret=%dn",ret);
return 0;
}
2、服务器端
创建网络套接字
设置服务器地址
绑定该套接字,使得套接字和对应的端口相关联
循环处理客户端请求
使用recvfrom等待接收客户端发送的数据
使用sendto发送数据至客户端
#include <sys/un.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#define BUFF_SIZE 1024
int main(void){
int server_sockfd;
int client_sockfd;
char ch;
int ret;
int recv_len;
char buff[BUFF_SIZE];
//用来UNIx系统内部通信的地址,struct sockaddr_un
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int client_addr_len=sizeof(struct sockaddr_in);
server_sockfd=socket(AF_INET,SOCK_DGRAM,0);
//设置服务器地址
server_addr.sin_family=AF_INET; //地址的域,相当于地址的类型,
//AF_UNIX表示地址位于UNIX系统内部
server_addr.sin_addr.s_addr=INADDR_ANY;
//inet_addr("10.10.0.9");
server_addr.sin_port=htons(9000);
//绑定套接字,使得该套接字和对应的系统套接字文件相关联
ret=bind(server_sockfd,(struct sockaddr*)&server_addr,sizeof(server_addr));
if(ret==-1){
perror("bind");
exit(1);
}
//创建套接字队列,保存进入该服务器的客户端请求
//ret=listen(server_sockfd,5);
//循环处理客户端请求
while(1){
printf("server waitingn");
//等待并接受客户端请求
//client_sockfd=accept(server_sockfd,(struct sockaddr*)&client_addr,&client_addr_len);
recv_len=recvfrom(server_sockfd,buff,sizeof(buff),0,(struct sockaddr*)&client_addr,&client_addr_len);
if(recv_len<0){
perror("recvfrom");
exit(errno);
}
printf("received:%sn",buff);
}
close(server_sockfd);
return 0;
}
最后
以上就是美好钥匙为你收集整理的UDP通信代码的全部内容,希望文章能够帮你解决UDP通信代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复