当前位置: 首页 > news >正文

1228作业

思维导图

作业

TCP的cs模型
服务器

//服务器
#include <myhead.h>
#define PORT 6667
#define IP "192.168.124.94"
#define BACKLOG 128
int main(int argc, const char *argv[])
{//创建套接字int oldfd = socket(AF_INET,SOCK_STREAM,0);if(oldfd==-1){perror("socket");return -1;}//将套接字与本地IP绑定在一起struct sockaddr_in s;s.sin_family = AF_INET;s.sin_port = htons(PORT);s.sin_addr.s_addr = inet_addr(IP);if((bind(oldfd,(struct sockaddr *)&s,sizeof(s))==-1)){perror("bind");return -1;}//监听if(listen(oldfd,BACKLOG)==-1){perror("listen");return -1;}//接受连接请求,并记录连接者的信息struct sockaddr_in c;int len = sizeof(c);int newfd = accept(oldfd,(struct sockaddr *)&c,&len);if(newfd==-1){perror("accept");return -1;}printf("与%s:%d建立连接\n",inet_ntoa(c.sin_addr),ntohs(c.sin_port));//读写消息char buff[1024];while(1){int res = read(newfd,buff,sizeof(buff));printf("%s\n",buff);strcat(buff,"你好啊");write(newfd,buff,res);}return 0;
}

客户端

//客户端
#include <myhead.h>
#define PORT 6666
#define IP "192.168.124.94"
int main(int argc, const char *argv[])
{//创建套接字int oldfd = socket(AF_INET,SOCK_STREAM,0);if(oldfd==-1){perror("socket");return -1;}//向客户端发送连接消息,并带上自己的信息struct sockaddr_in k;k.sin_family = AF_INET;k.sin_port = htons(PORT);k.sin_addr.s_addr = inet_addr(IP);if((connect(oldfd,(struct sockaddr *)&k,sizeof(k)))==1){perror("connect");return -1;}//读写消息char buff[1024];while(1){printf("请输入信息:\n");//int res =read(0,buff,sizeof(buff));fgets(buff,sizeof(buff),stdin);write(oldfd,buff,sizeof(buff));printf("发送成功\n");//read(oldfd,buff,sizeof(buff));//printf("接收到消息:%s\n",buff);//bzero(buff,sizeof(buff));}return 0;
}

UDP服务器中,使用connect函数实现唯一的客户端与唯一的服务器通讯
​​​​​​

服务器

//服务器
#include <myhead.h>
#define PORT 8765
#define IP "192.168.124.94"
int main(int argc, const char *argv[])
{//创建套接字int oldfd = socket(AF_INET,SOCK_DGRAM,0);if(oldfd==-1){perror("socket");return -1;}//绑定struct sockaddr_in server = {.sin_family = AF_INET,.sin_port = htons(PORT),.sin_addr.s_addr = inet_addr(IP)};if(bind(oldfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("bind");return -1;}#if 1//收发消息struct sockaddr_in client;//存储发来信息的客户端的信息int len = sizeof(client);char buff[1024];int flag=0;while(1){recvfrom(oldfd,buff,sizeof(buff),0,(struct sockaddr *)&client,&len);buff[strlen(buff)]='\0';if(strcmp(buff,"quit")==0){flag=1;printf("连接已经断开\n");}else{printf("已建立唯一连接\n");}printf("收到%s:%d的消息:%s\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port),buff);//与该客户端进行连接while(flag){recvfrom(oldfd,buff,sizeof(buff),0,(struct sockaddr *)&client,&len);if(connect(oldfd,(struct sockaddr *)&client,len)==-1){perror("connect");return -1;}printf("再次连接新的客户端\n");printf("收到%s:%d的消息:%s\n",inet_ntoa(client.sin_addr),ntohs(client.sin_port),buff);flag=0;}strcat(buff,"世界美好");sendto(oldfd,buff,sizeof(buff),0,(struct sockaddr *)&client,sizeof(client));}
#endifreturn 0;
}

客户端

//客户端
#include <myhead.h>
#define PORT 8765
#define IP "192.168.124.94"
int main(int argc, const char *argv[])
{//创建套接字int oldfd = socket(AF_INET,SOCK_DGRAM,0);if(oldfd==-1){perror("socket");return -1;}#if 1//收发消息struct sockaddr_in server = {.sin_family = AF_INET,.sin_port = htons(PORT),.sin_addr.s_addr = inet_addr(IP)};char buff[1024];while(1){printf("请输入发送的消息:\n");fgets(buff,sizeof(buff),stdin);buff[strlen(buff)-1]='\0';sendto(oldfd,buff,sizeof(buff),0,(struct sockaddr *)&server,sizeof(server));if(strcmp(buff,"quit")==0){break;}bzero(buff,sizeof(buff));recvfrom(oldfd,buff,sizeof(buff),0,NULL,NULL);printf("接收服务器信息:%s\n",buff);}
#endifreturn 0;
}

http://www.lryc.cn/news/511140.html

相关文章:

  • Machine-learning the skill of mutual fund managers
  • Windows下Python+PyCharm的安装步骤及PyCharm的使用
  • Anaconda+PyTorch(CPU版)安装
  • 第 28 章 - ES 源码篇 - Elasticsearch 启动与插件加载机制解析
  • 机床数据采集网关在某机械制造企业的应用
  • 美团Android开发200道面试题及参考答案(上)
  • MQTT协议的应用场景及特点和常见的概念03
  • 电脑缺失sxs.dll文件要怎么解决?
  • 数据处的存储与处理——添加数组
  • 24-12-28-pytorch深度学习CUDA的GPU加速环境配置步骤
  • YOLO系列正传(五)YOLOv4论文精解(上):从CSPNet、SPP、PANet到CSPDarknet-53
  • 【AIGC-ChatGPT副业提示词指令 - 动图】魔法咖啡馆:一个融合创意与治愈的互动体验设计
  • AIGC在电影与影视制作中的应用:提高创作效率与创意的无限可能
  • 第三百四十六节 JavaFX教程 - JavaFX绑定
  • IDEA+Docker一键部署项目SpringBoot项目
  • vue Promise使用
  • Tomcat调优相关理解
  • uni-app开发-识图小程序-主要功能以及首页实现
  • vue3 ref reactive响应式数据,赋值的问题、解构失去响应式问题
  • 算法常用库函数——C++篇
  • 怎么把多个PDF合并到一起-免费实用PDF编辑处理工具分享
  • RFC协议简要介绍——有关TCP拥塞控制的RFC
  • Speckly:基于Speckle文档的RAG智能问答机器人
  • 香橙派5Plus启动报错bug: spinlock bad magic on cpu#6, systemd-udevd/443
  • 电子应用设计方案74:智能家庭对讲系统设计
  • node js 过滤空白行
  • 武泳樽携手AI AD Manager荣获红点奖,智能广告管理系统备受瞩目
  • Express.js 有哪些常用的中间件?
  • WordPress File Upload插件 任意文件读取漏洞复现(CVE-2024-9047)(附脚本)
  • qt QZipReader详解