网络编程作业day2

1.将TPC和UDP通信模型各敲两遍

(1)TPC通信模型:

服务器代码:

#include <myhead.h>
#define SERVER_IP "192.168.125.136"
#define SERVER_PORT 1314
int main(int argc, const char *argv[])
{
	//1、创建用于监听的套接字
	int sfd=socket(AF_INET,SOCK_STREAM,0);
	if(sfd==-1)
	{
		perror("socket error");
	    return -1;
	}
	//2、绑定ip和端口号
	//先定义地址信息结构体
	struct sockaddr_in sin;
	sin.sin_family=AF_INET;//地址族
	sin.sin_port=htons(SERVER_PORT);//服务器端口号
	sin.sin_addr.s_addr=inet_addr(SERVER_IP);//服务器ip地址
	//再进行绑定
	if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
	{
		perror("bind error");
		return -1;
	}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
	//3、设置套接字为监听状态
	if(listen(sfd,128)==-1)
	{
		perror("listen error");
		return -1;
	}
	//4、服务器接收客户端连接,并获获取客户端的地址信息
	//定义客户端地址信息结构体
	struct sockaddr_in cin;
	int size=sizeof(cin);
	int newfd=accept(sfd,(struct sockaddr*)&cin,&size);
	if(newfd==-1)
	{
		perror("nwefd error");
		return -1;
	}
	printf("连接的客户端的ip地址:%s,端口号:%d\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port));
	//5、交互数据
	char rbuf[1024];
	while(1)
	{
		//服务器接收客户端发来的数据存入到rbuf中
		bzero(rbuf,sizeof(rbuf));//清空容器
		int res=recv(newfd,rbuf,sizeof(rbuf),0);//阻塞接收
		if(strcmp(rbuf,"end")==0)
		{
			break;
		}
		printf("接收到的数据:%s\n",rbuf);
		//服务器回复客户端已收到数据
		char wbuf[100]="已收到数据";
		send(newfd,wbuf,sizeof(wbuf),0);
	}
	//6、关闭套接字
	close(sfd);
	close(newfd);
		return 0;
}

客户端代码:

#include <myhead.h>
#define SERVER_IP "192.168.125.136"
#define SERVER_PORT 1314
int main(int argc, const char *argv[])
{
	//1、创建套接字
	int sfd=socket(AF_INET,SOCK_STREAM,0);
	if(sfd==-1)
	{
		perror("socket error");
		return -1;
	}
	//2、绑定ip和端口号(可选)   

	//3、客户端绑定服务器
	//定义需要绑定的地址信息结构体
	struct sockaddr_in sin;
	sin.sin_family=AF_INET;//地址族
	sin.sin_port=htons(SERVER_PORT);//服务器端口号
	sin.sin_addr.s_addr=inet_addr(SERVER_IP);//服务器ip地址
	//连接
	if(connect(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
	{
		perror("connect error");
		return -1;
	}

	//4、交互数据
	char rbuf[1024];
	while(1)
	{
		//从终端接的数据存入到rbuf中
		bzero(rbuf,sizeof(rbuf));//清空容器
		printf("请输入:");
        fgets(rbuf, sizeof(rbuf),stdin); 
        rbuf[strlen(rbuf)-1]=0;
		if(strcmp(rbuf,"end")==0)
		{
			break;
		}
		send(sfd,rbuf,sizeof(rbuf),0);
		printf("发送成功\n");
		//客户端从服务器接收数据
		char wbuf[100];
		bzero(wbuf,sizeof(wbuf));
		recv(sfd,wbuf,sizeof(wbuf),0);
		printf("收到服务器信息:%s\n",wbuf);
	}
	//5、关闭套接字
	close(sfd);
	return 0;
}

(2)UDP通信模型:

服务器代码:

#include <myhead.h>
#define SERVER_IP "192.168.101.104"
#define SERVER_PORT 1314
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、绑定ip和端口号
	//先定义地址信息结构体
	struct sockaddr_in sin;
	sin.sin_family=AF_INET;//地址族
	sin.sin_port=htons(SERVER_PORT);//服务器端口号
	sin.sin_addr.s_addr=inet_addr(SERVER_IP);//服务器ip地址
	//再进行绑定
	if(bind(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
	{
		perror("bind error");
		return -1;
	}    
	//3、收发数据
	char rbuf[1024];
	//定义容器接收对端地址信息结构体
    struct sockaddr_in cin;
    int size=sizeof(cin);
    while(1)
    {
        bzero(rbuf, sizeof(rbuf));
        //接收数据
        recvfrom(sfd, rbuf, sizeof(rbuf),0,(struct sockaddr*)&cin, &size);
		printf("收到客户端发来的消息为:%s\n", rbuf);
		if(strcmp(rbuf,"end")==0)
		{
			break;
		}
          //回复已收到
        char wbuf[100]="已收到数据";        
		sendto(sfd, wbuf, sizeof(wbuf), 0, (struct sockaddr*)&cin,size);         
    }

    //4、关闭套接字
    close(sfd);

	return 0;
}

客户端代码:

#include <myhead.h>
#define SERVER_IP "192.168.101.104"
#define SERVER_PORT 1314
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、绑定ip和端口号(可选)   
	
	//定义服务器的地址信息结构体
    struct sockaddr_in sin;
    sin.sin_family = AF_INET;
    sin.sin_port = htons(SERVER_PORT);
    sin.sin_addr.s_addr = inet_addr(SERVER_IP);
	int maxsize=sizeof(sin);
	//3、交互数据
	char rbuf[1024];
	while(1)
	{
		//从终端接的数据存入到rbuf中
		bzero(rbuf,sizeof(rbuf));//清空容器
		printf("请输入:");
        fgets(rbuf, sizeof(rbuf),stdin); 
        rbuf[strlen(rbuf)-1]=0;
		sendto(sfd,rbuf,sizeof(rbuf),0,(struct sockaddr*)&sin, sizeof(sin));//客户端数据发送到服务器
		printf("发送成功\n");
		if(strcmp(rbuf,"end")==0)
		{
			break;
		}
		//客户端从服务器接收数据
		char wbuf[100];
		bzero(wbuf,sizeof(wbuf));
		recvfrom(sfd,wbuf,sizeof(wbuf),0,(struct sockaddr*)&sin,&maxsize);
		printf("收到服务器信息:%s\n",wbuf);
	}
	//4、关闭套接字
	close(sfd);
	return 0;
}

思维导图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信号系统之滤波器比较

比较 1&#xff1a;模拟与数字滤波器 大多数数字信号源自模拟电子设备。**如果需要对信号进行滤波&#xff0c;是在数字化之前使用模拟滤波器&#xff0c;还是在数字化后使用数字滤波器更好&#xff1f;**将通过两个对比来回答问题。 目标是提供 1 kHz的低通滤波器。模拟端是…

八股文打卡day24——数据库(1)

面试题&#xff1a;左连接和右连接的区别&#xff1f; 我的回答&#xff1a; 左连接的SQL语句是&#xff1a;左表 left join 右表 on 连接条件&#xff0c;表示以左表为基础&#xff0c;将左表的的所有记录与右表进行连接。即使右表中没有与左表匹配的记录&#xff0c;左连接…

ROS 2基础概念#2:节点(Node)| ROS 2学习笔记

ROS 2节点简介 节点是执行计算的进程。节点组合在一起形成一个图&#xff08;graph&#xff09;&#xff0c;并使用主题&#xff08;topic&#xff09;、服务&#xff08;service&#xff09;和参数服务器&#xff08;paramter server&#xff09;相互通信。这些节点旨在以细粒…

力扣-H指数

问题 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数” &#xff0c;一名科研人员的 h 指数 是指他&#xff08;她&#xff09…

Tomcat服务部署

1、安装jdk、设置环境变量并测试 第一步&#xff1a;安装jdk 在部署 Tomcat 之前必须安装好 jdk&#xff0c;因为 jdk 是 Tomcat 运行的必要环境。 1. #关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 02. #将安装 Tomcat 所需软件包传到/opt…

数据结构与算法 - 数组与二分查找 + Leetcode典型题

1. 什么是数组 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标下对应的数据。 C中二维数组在地址空间上也是连续的。 需注意&#xff1a; 数组的下标从0开始。数组内存空间的地址是连续的。数组的元素是不能删的&#xff0c…

c#打印BarTend标签提示:具名数据源没有cuckoo*具名数据(解决)

c#打印BarTend标签提示&#xff1a;具名数据源没有cuckoo*具名数据&#xff08;解决&#xff09; 今天咕咕更新打印模板的时候遇到的问题&#xff0c;就是在模版中配置了字段名&#xff0c;但是启动c#应用&#xff0c;后端发送json数据打印的时候c#报错提示&#xff0c;没有在…

ywtool ssh命令

一.SSH免密登陆介绍 这个功能就是通过脚本对本机器和其他机器配置SSH密钥&#xff0c;并将自己的密钥放到其他机器上(确保运维的机器要安全)&#xff0c;这样可以不用输入密码就能登陆&#xff1b;通过scp拷贝文件也不需要输入密码。此功能也可以设置机器root用户只用密钥登陆…

【办公类-22-07】周计划系列(3-2)“信息窗+主题知识(优化)” (2024年调整版本)

作品展示&#xff1a; 背景需求 前文对“2023年2月”的一套信息窗主题知识的文件系列&#xff0c;进行第一次的提取。获得基础模板。 【办公类-22-07】周计划系列&#xff08;3-1&#xff09;“信息窗主题知识&#xff08;提取&#xff09;” &#xff08;2024年调整版本&…

前端-BOM和DOM的区别和用法

首先上图&#xff0c;这是整个JAVASCRIPTD 结构&#xff0c;因此我们可以得出一个关系等式 JavaScript ECMAscript BOM DOMECMAscript&#xff1a; 是一种由 ECMA国际&#xff08;前身为欧洲计算机制造商协会&#xff09;通过 ECMA-262 标准化的脚本程序设计语言&#xff0…

【笔记】深度学习入门:基于Python的理论与实现(五)

卷积神经网络 卷积神经网络(Convolutional Neural Network&#xff0c;CNN) 整体结构 CNN 中新出现了卷积层(Convolution 层)和池化层(Pooling 层)&#xff0c;之前介绍的神经网络中&#xff0c;相邻层的所有神经元之间都有连接&#xff0c;这称为全 连接(fully-connected) …

GPT-SoVITS音色克隆-模型训练步骤

GPT-SoVITS音色克隆-模型训练步骤 GPT-SoVITS模型源码一个简单的TTS后端项目 基于模型部署和训练教程&#xff0c;语雀 模型部署和训练教程 启动模型训练的主页面 1. 切到模型路径 /psycheEpic/GPT-SoVITS进入Python虚拟环境&#xff0c;并挂起执行python脚本 conda activ…

fastAdmin表格列表的功能

更多文章&#xff0c;请关注&#xff1a;fastAdmin后台功能详解 | 夜空中最亮的星 FastAdmin是一款基于ThinkPHP5Bootstrap的极速后台开发框架。优点见开发文档 介绍 - FastAdmin框架文档 - FastAdmin开发文档 在这里上传几张优秀的快速入门图: 一张图解析FastAdmin中的表格列…

【python】Python Turtle绘制流星雨动画效果【附源码】

在这篇技术博客中&#xff0c;我们将学习如何使用 Python 的 Turtle 模块绘制一个流星雨的动画效果。通过简单的代码实现&#xff0c;我们可以在画布上展现出流星闪耀的场景&#xff0c;为视觉带来一丝神秘与美感。 一、效果图&#xff1a; 二、准备工作 &#xff08;1)、导入…

IntelliJ IDEA上svn分支管理和使用

IntelliJ IDEA上svn分支管理和使用 从Subversion下载trunk下的代码 选择项目创建分支 右键 Subversion --> branch or Tag … 选择Repository Location:需要创建的项目 选择Any Location 分支的位置和名字 详细查看截图 切换到分支 选择项目右键Subversion --> Update …

Dockerfile(1) - FROM 指令详解

FROM 指明当前的镜像基于哪个镜像构建dockerfile 必须以 FROM 开头&#xff0c;除了 ARG 命令可以在 FROM 前面 FROM [--platform<platform>] <image> [AS <name>]FROM [--platform<platform>] <image>[:<tag>] [AS <name>]FROM […

全网最新的软件测试面试八股文

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试技术面试题 1、什么是兼容性测试&#xff1f;兼容性测试侧…

如何在Win系统从零开始搭建Z-blog网站,并将本地博客发布到公网可访问

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员&#xff0c;自己搭建网站制作网页是绕…

sql注入less46作业三

采用报错注入 updatexml(XML_document,XPath_string,new_value) 一共可以接收三个参数&#xff0c;报错位置在第二个参数。 ?sort1 and updatexml(1,concat(0x7e,database(),0x7e),1)-- #查询库名 ?sort1 and updatexml(1,concat(0x7e,(select group_concat(table_name) fr…

java 企业培训管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 企业培训管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…