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

网络编程 day1.2~day2——TCP和UDP的通信基础(TCP)

笔记脑图

作业:

1、将虚拟机调整到桥接模式联网。

2、TCP客户端服务器实现一遍。

服务器

#include <stdio.h>
#include <string.h>
#include <myhead.h>
#define IP "192.168.60.44"
#define PORT 6666
#define BACKLOG 20
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 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(listen(oldfd,BACKLOG)==-1){perror("listen");return -1;}//接收通信struct sockaddr_in client;socklen_t client_len=sizeof(client);int newfd;newfd=accept(oldfd,(struct sockaddr *)&client,&client_len);if(newfd==-1){perror("accept");return -1;}printf("%s发来连接请求\n",inet_ntoa(client.sin_addr));//循环收发char buff[1024];while(1){memset(buff,0,sizeof(buff));//int len=read(newfd,buff,sizeof(buff));int len=recv(newfd,buff,sizeof(buff),0);if(len==0){printf("客户端下线\n");break;}printf("%s\n",buff);strcat(buff,"5201314");//write(newfd,buff,sizeof(buff));send(newfd,buff,sizeof(buff),0);}//关闭close(oldfd);close(newfd);	return 0;
}

客户端

#include <stdio.h>
#include <string.h>
#include <myhead.h>
#define IP "192.168.60.44"
#define PORT 6666
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 server={.sin_family=AF_INET,.sin_port=htons(PORT),.sin_addr.s_addr=inet_addr(IP),};if(connect(oldfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("connect");return -1;}//循环收发char buff[1024];while(1){fgets(buff,sizeof(buff),stdin);buff[strlen(buff)-1]='\0';send(oldfd,buff,sizeof(buff),0);int len=recv(oldfd,buff,sizeof(buff),0);if(len==0){printf("服务器意外退出\n");break;}printf("接收服务器的消息:%s\n",buff);}//关闭close(oldfd);return 0;
}

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

相关文章:

  • element ui table 每行不同状态
  • 力扣--LRC 142.训练计划IV
  • windows下,用CMake编译qt项目,出现错误By not providing “FindQt5.cmake“...
  • 【element-tiptap】Tiptap编辑器核心概念----结构篇
  • 半导体工艺与制造篇3 离子注入
  • 利用开源的低代码表单设计器FcDesigner高效管理和渲染复杂表单结构
  • 淘宝 NPM 镜像源
  • i春秋-GetFlag(md5加密,字符串比较绕过)
  • SpringBoot中设置超时30分钟自动删除元素的List和Map
  • 入门车载以太网(6) -- XCP on Ethernet
  • DAY4 网络编程(广播和多线程并发)
  • C++个人复习(4)
  • Dockerhub镜像加速
  • 11.20讲座笔记
  • 网络协议之UDP
  • Elasticsearch面试内容整理-常见问题和解决方案
  • React 表单Form 中的 useForm
  • 用指针函数寻找数组中的最大值与次大值
  • 人工智能在金融领域的创新与应用
  • shell脚本(4)一文解决比较运算符用户交互
  • windows 操作系统下载 Android源码教程
  • 【AIGC】如何使用高价值提示词Prompt提升ChatGPT响应质量
  • vue3-input 搜索框
  • 记录eslint报错的情况
  • mongodb多表查询,五个表查询
  • Git Bash + VS Code + Windows11 Git命令报错莫名奇妙的问题
  • 湛江市社保卡申领指南:手机获取电子照片回执单号
  • Linux离线安装Docker命令,简单镜像操作
  • 【Node.js】Node.js 和浏览器之间的差异
  • 基于MySQL的 CMS(内容管理系统)的表结构设计