【网络编程】UDP通信基础模型实现

udpSer.c

#include<myhead.h>
#define SER_IP "192.168.119.143"
#define SER_PORT 7777
int main(int argc, const char *argv[])
{
	//1.创建
	int sfd = socket(AF_INET,SOCK_DGRAM,0);
	if(sfd == -1)
	{
		perror("socket error");
		return -1;
	}
	//2.连接
	struct sockaddr_in sin;
	sin.sin_family = AF_INET;//通讯域
	sin.sin_port = htons(SER_PORT);//端口号
	sin.sin_addr.s_addr = inet_addr(SER_IP);//ip地址
	if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
	{
		perror("bind error");
		return -1;
	}
	printf("bind success\n");
	//3.数据收发
	char buf[128]="";
	struct sockaddr_in cin;//接收对端地址信息
	socklen_t addrlen = sizeof(cin);//接收地址长度
	while(1)
	{
		bzero(buf,sizeof(buf));//清空数据
		if(recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cin,&addrlen)==-1)//接收数据
		{
			perror("recvfrom error");
			return -1;
		}
		if(strcmp(buf,"quit")==0)
		{
			printf("服务端退出\n");
			break;
		}
		printf("接收到的数据是:%s\n",buf);
		bzero(buf,sizeof(buf));
		strcat(buf,"*-*");
		if(sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cin,sizeof(cin))==-1)//发送数据
		{
			perror("sendto error");
			return -1;
		}
	}
	//4.关闭
	close(sfd);
	return 0;
}

udpCli.c

#include<myhead.h>
#define SER_IP "192.168.119.143"
#define SER_PORT 7777
#define CLI_IP "192.168.119.143"
#define CLI_PORT 9999
int main(int argc, const char *argv[])
{
	//1.创建套接字
	int cfd = socket(AF_INET,SOCK_DGRAM,0);
	if(cfd == -1)
	{
		perror("socket error");
		return -1;
	}
	//2.绑定
	struct sockaddr_in cin;//客户端地址
	cin.sin_family = AF_INET;//地址族
	cin.sin_port = htons(CLI_PORT);//端口
	cin.sin_addr.s_addr = inet_addr(CLI_IP);//IP地址
	if(bind(cfd,(struct sockaddr*)&cin,sizeof(cin))==-1)//绑定
	{
		perror("bind error");
		return -1;
	}
	//3.数据收发
	char buf[128]="";
	struct sockaddr_in sin;//服务器地址
	sin.sin_family = AF_INET;//地址族
	sin.sin_port = htons(SER_PORT);//端口
	sin.sin_addr.s_addr = inet_addr(SER_IP);//IP地址
	while(1)
	{
		bzero(buf,sizeof(buf));//数据初始化
		printf("请输入>>>");
		fgets(buf,sizeof(buf),stdin);
		buf[strlen(buf)-1]=0;
		sendto(cfd,buf,sizeof(buf),0,(struct sockaddr*)&sin,sizeof(sin));//发送数据
		if(strcmp(buf,"quit")==0)
		{
			printf("客户端退出\n");
			return -1;
		}
		recvfrom(cfd,buf,sizeof(buf),0,NULL,NULL);//接收数据
		printf("接收到的数据是:%s\n",buf);
	}
	//4.关闭
	close(cfd);
	return 0;
}

效果展示

相关推荐
网络安全-杰克22 分钟前
网络安全概论
网络·web安全·php
怀澈12226 分钟前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
耗同学一米八1 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题二
运维·网络·mariadb
skywalk81631 小时前
树莓派2 安装raspberry os 并修改成固定ip
linux·服务器·网络·debian·树莓派·raspberry
_不会dp不改名_1 小时前
HCIA笔记3--TCP-UDP-交换机工作原理
笔记·tcp/ip·udp
陌小呆^O^1 小时前
Cmakelist.txt之win-c-udp-server
c语言·开发语言·udp
C++忠实粉丝1 小时前
计算机网络socket编程(3)_UDP网络编程实现简单聊天室
linux·网络·c++·网络协议·计算机网络·udp
黑客Ela2 小时前
网络安全中常用浏览器插件、拓展
网络·安全·web安全·网络安全·php
qdprobot2 小时前
ESP32桌面天气摆件加文心一言AI大模型对话Mixly图形化编程STEAM创客教育
网络·人工智能·百度·文心一言·arduino
hakesashou3 小时前
Python中常用的函数介绍
java·网络·python