网络编程day2作业

news2024/11/22 22:35:09

1.tcp实现通信

服务器:

//tcp服务端

#include <head.h>

#define SERPORT 8888
#define IP "192.168.125.6"

int main(int argc, const char *argv[])
{ 
	//1.创建套接字
	int sfd=socket(AF_INET,SOCK_STREAM,0);
	
	//2.绑定
	struct sockaddr_in ser;
	ser.sin_family=AF_INET;
	ser.sin_port=htons(SERPORT);
	ser.sin_addr.s_addr=inet_addr(IP);

	bind(sfd,(struct sockaddr*)&ser,sizeof(ser));
	printf("服务器已上线!\n");

	//3.监听
	listen(sfd,128);
	printf("开始监听客户端连接情况>>>>>\n");
	
	//4.接收客户端地址消息结构体
	struct sockaddr_in cli;
	socklen_t socklen=sizeof(cli);
	int newfd=accept(sfd,(struct sockaddr*)&cli,&socklen);
	
	printf("客户:[%s: %d]连接成功\n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port));
	
	//5.收发数据
	char buf[128]="";
	while(1)
	{
		bzero(buf,sizeof(buf));
		recv(newfd,buf,sizeof(buf),0);
		printf("[%s: %d]:%s\n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port),buf);

		if(strcmp(buf,"quit")==0)
		{
			printf("客户[%s: %d]已下线!\n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port));
			break;
		}
	}
	
	//6.关闭套接字
	close(newfd);
	close(sfd);

	return 0;
}

客户端:

//tcp客户端

#include <head.h>

#define PORT 8888
#define IP "192.168.125.6"

int main(int argc, const char *argv[])
{ 
	//1.创建套接字
	int cfd=socket(AF_INET,SOCK_STREAM,0);
	
	//2.连接服务端
	struct sockaddr_in ser;
	ser.sin_family=AF_INET;
	ser.sin_port=htons(PORT);
	ser.sin_addr.s_addr=inet_addr(IP);

	connect(cfd,(struct sockaddr*)&ser,sizeof(ser));
	printf("已连接服务器!\n");
	
	//3.收发数据
	char buf[128]="";
	while(1)
	{
		bzero(buf,sizeof(buf));
		printf("请输入内容:");
		fgets(buf,sizeof(buf),stdin);
		buf[strlen(buf)-1]='\0';
		send(cfd,buf,sizeof(buf),0);

		if(strcmp(buf,"quit")==0)
			break;
	}
	
	//4.关闭套接字
	close(cfd);

	return 0;
}

效果:

2.udp实现通信

服务器:

//udp服务器

#include <head.h>

#define PORT 9999
#define IP "192.168.125.6"

int main(int argc, const char *argv[])
{ 
	//1.创建套接字
	int sfd=socket(AF_INET,SOCK_DGRAM,0);
	
	//2.绑定服务器
	struct sockaddr_in ser;
	ser.sin_family=AF_INET;
	ser.sin_port=htons(PORT);
	ser.sin_addr.s_addr=inet_addr(IP);

	bind(sfd,(struct sockaddr*)&ser,sizeof(ser));
	printf("服务器已上线! 等待连接中>>>>>\n");
	
	//3.收发数据
	char buf[128]="";
	struct sockaddr_in cli;
	socklen_t socklen=sizeof(cli);
	while(1)
	{
		bzero(buf,sizeof(buf));
		recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr*)&cli,&socklen);
		printf("客户[%s: %d]:%s\n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port),buf);
		
		if(strcmp(buf,"quit")==0)
		{
			printf("客户[%s: %d]已下线!\n",inet_ntoa(cli.sin_addr),ntohs(cli.sin_port));
			break;
		}
	}
	
	//4.关闭套接字
	close(sfd);


	return 0;
}

客户端:

//udp客户端

#include <head.h>

#define PORT 9999
#define IP "192.168.125.6"

int main(int argc, const char *argv[])
{ 
	//1.创建套接字
	int cfd=socket(AF_INET,SOCK_DGRAM,0);
	
	//2.收发数据
	char buf[128]="";
	struct sockaddr_in ser;
	ser.sin_family=AF_INET;
	ser.sin_port=htons(PORT);
	ser.sin_addr.s_addr=inet_addr(IP);

	while(1)
	{
		bzero(buf,sizeof(buf));
		fgets(buf,sizeof(buf),stdin);
		buf[strlen(buf)-1]='\0';
		sendto(cfd,buf,sizeof(buf),0,(struct sockaddr*)&ser,sizeof(ser));

		if(strcmp(buf,"quit")==0)
			break;
	}
	
	//3.关闭套接字
	close(cfd);


	return 0;
}

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1317719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java --- 集合进阶

目录 一、单列集合顶层接口 Collection 1.1 基本方法 1.2 Collection 的遍历方式 二、list集合 1.2 ArrayList Vector 底层结构 1.3 LinkedList ArrayList 和 LinkedList 比较 三、set接口 3.1、Set 接口和常用方法 3.2 HashSet HashSet 底层机制&#xff08;HashMap…

虚拟机Linux(Centos7)安装Docker

如果没有安装虚拟机的&#xff0c;可以参考这篇VMware虚拟机安装Linux操作系统&#xff08;CentOS7&#xff09; 文章目录 0.安装Docker1.CentOS安装Docker1.1.卸载&#xff08;可选&#xff09;如何看自己的虚拟机上是否安装过docker&#xff1f; 1.2.安装docker1.3.启动docke…

pytest之allure测试报告02:allure具体使用方法

一、allure包含的方法 二、allure使用教程 &#xff08;1&#xff09;用例中写入allure方法 allure.epic("数据进制项目epic") allure.feature("手机号模块feature") class TestMobile:allure.story("杭州的手机号story")allure.title("测…

多层记忆增强外观-运动对齐框架用于视频异常检测 论文阅读

MULTI-LEVEL MEMORY-AUGMENTED APPEARANCE-MOTION CORRESPONDENCE FRAMEWORK FOR VIDEO ANOMALY DETECTION 论文阅读 摘要1.介绍2.方法2.1外观和运动对其建模2.2.记忆引导抑制模块2.3. Training Loss2.4. Anomaly Detection 3.实验与结果4.结论 论文标题&#xff1a;MULTI-LEVE…

重磅!大模型(LLMs)排行榜清单发布!

目前&#xff0c;人工智能领域呈现出一片蓬勃发展的景象&#xff0c;大型模型成为了激发这一繁荣的关键引擎。 国内不仅涌现了众多大模型&#xff0c;而且它们的发展速度之快令人瞩目。这种全面拥抱大型模型的态势为整个人工智能生态系统赋予了新的活力&#xff0c;让我们对国…

栈——OJ题

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、最小栈1、题目讲解2、思路讲解3、代码实现 二、栈的压入、弹出序列1、题目讲解2、思路讲解…

CCD相机为什么需要积分球均匀光源

积分球内腔是一个具备高漫反射特性的收光球&#xff0c;其内部中空、内球面均匀地涂有漫反射材料&#xff0c;具有匀光与混光的作用&#xff0c;因此常常被用来做收光的均光球。由于光源性能等因素的影响&#xff0c;可能导致出射光线带偏振方向、出光不均匀&#xff0c;使用积…

Windows11环境下配置深度学习环境(Pytorch)

目录 1. 下载安装Miniconda2. 新建Python3.9虚拟环境3. 下载英伟达驱动4. 安装CUDA版Pytorch5. CPU版本pytorch安装 1. 下载安装Miniconda 下载安装包&#xff1a;镜像文件地址 将Miniconda相关路径添加至系统变量的路径中。 打开Anaconda Powershell Prompt&#xff0c;输入…

【C++学习————引用】

【C学习——————引用】 欢迎阅读新一期的c模块————引用 ✒️个人主页&#xff1a;-Joker- &#x1f3f7;️专栏&#xff1a;C &#x1f4dc;代码仓库&#xff1a;c_code &#x1f339;&#x1f339;欢迎大佬们的阅读和三连关注&#xff0c;顺着评论回访&#x1f339;&a…

秋招上岸记录咕咕咕了。

思考了一下&#xff0c;感觉并没有单独写这样一篇博客的必要。 能够写出来的&#xff0c;一些可能会对人有帮助的东西都做进了视频里面&#xff0c;未来会在blbl发布&#xff0c;目前剪辑正在施工中&#xff08;&#xff1f;&#xff09; 另外就是&#xff0c;那个视频里面使…

Win11 跑通tensorRT

cuda_12.3.1_546.12_windows TensorRT-8.6.1.6.Windows10.x86_64.cuda-12.0 cudnn-windows-x86_64-8.9.7.29_cuda12-archive 准备 1.安装cuda&#xff0c;成功之后文件夹如下图所示 2.下载cudnn&#xff0c;把cudnn对应的文件放在cuda里面 3.安装vs 4.安装对应cuda版本的te…

DevOps常用工具全家桶,实现高效运维和交付

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

Linux c++开发-06-使用Linux API 进行文件的读写

先简单的介绍一下open,read,write 先用open接口去打开文件&#xff0c;flag表示打开文件的权限不同。 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);示例 结果&#xff1a;

基于AT89C51单片机的LED点阵显示屏设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; [[https://download.csdn.net/download/qq_64505944/88637464?spm1001.2014.3001.5503]] **[源码获取] B 源码仿真图课程设计50 工程实训&#xff08;三&#xff09;课题设计 班级&#xff1a; …

FPGA — Vivado下ILA(逻辑分析仪)详细使用方法

使用软件&#xff1a; Vivado 开发板&#xff1a; EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA 使用程序&#xff1a;按键案例 ILA详细使用方法 一、ILA简介二、ILA的使用方法方法1 — 使用IP核创建ILA调试环境创建ILA IP核 方法二 — 使用 Debug 标记创建 ILA对需观察信…

使用IDEA创建springboot依赖下载很慢,解决方法

显示一直在resolving dependencies&#xff0c;速度很慢 原因&#xff1a;maven会使用远程仓库来加载依赖&#xff0c;是一个国外的网站&#xff0c;所以会很慢。应该使用阿里云的镜像&#xff0c;这样速度会提升很多。 步骤&#xff1a;1.右击pom.xml&#xff0c;选择"m…

DevEco Studio 项目鸿蒙(HarmonyOS)多语言

DevEco Studio 项目鸿蒙&#xff08;HarmonyOS&#xff09;多语言 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、多语言 新版本IDE可以创建多语言的文件夹&#xff0c;在entry->src->main->resources下&#xff0c;修…

图像识别完整项目之Swin-Transformer,从获取关键词数据集到训练的完整过程

0. 前言 图像分类的大部分经典神经网络已经全部介绍完&#xff0c;并且已经作了测试 代码已经全部上传到资源&#xff0c;根据文章名或者关键词搜索即可 LeNet &#xff1a;pytorch 搭建 LeNet 网络对 CIFAR-10 图片分类 AlexNet &#xff1a; pytorch 搭建AlexNet 对花进行分…

为什么Apache Doris适合做大数据的复杂计算,MySQL不适合?

为什么Apache Doris适合做大数据的复杂计算&#xff0c;MySQL不适合&#xff1f; 一、背景说明二、DB架构差异三、数据结构差异四、存储结构差异五、总结 一、背景说明 经常有小伙伴发出这类直击灵魂的疑问&#xff1a; Q&#xff1a;“为什么Apache Doris适合做大数据的复杂计…

相机倾斜棋盘格标定全记录 vs200+opencv安装

论文参考是这个 Geiger A, Moosmann F, Car , et al. Automatic camera and range sensor calibration using a single shot[C]//Robotics and Automation (ICRA), 2012 IEEE International Conference on. IEEE, 2012: 3936-3943. 代码是这个github 花了一上午配好了c环境。。…