我是靠谱客的博主 美好钥匙,最近开发中收集的这篇文章主要介绍UDP通信代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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通信代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部