1.典型的CS模型流程图

2.服务端需要做的事情

(1)socket():建立服务端套接字;
(2)bind():绑定IP和端口号,初始化struct sockaddr_in addr
(3)listen():指定最大同时发起连接数;
(4)accept():阻塞等待客户端发起连接;
(5)read():读取客户端数据;
(6)对已读取的数据进行处理;
(7)write():写回客户端;
(8)close()

3.客户端需要做的事情

(1)socket():建立客户端套接字;
(2)bind():当进行“隐式绑定”时,不需要第二步;
(3)connect():发起连接;
(4)write():向服务器写数据;
(5)read():读取服务器端的数据;
(6)close()

4.服务器端实例

#include<stdio.h>
#include<unistd.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<ctype.h>
#include<arpa/inet.h>#define SERV_IP "127.0.0.1"
#define SERV_PORT 6666
int main()
{int lfd,cfd;struct sockaddr_in serv_addr,clie_addr;socklen_t clie_addr_len;char buf[BUFSIZ];int n;lfd = socket(AF_INET,SOCK_STREAM,0);serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(SERV_PORT);serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);bind(lfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));listen(lfd,128);clie_addr_len = sizeof(clie_addr);cfd = accept(lfd,(struct sockaddr *)&clie_addr,&clie_addr_len);while(1){n = read(cfd,buf,sizeof(buf));for(int i=0;i<n;i++){buf[i] = toupper(buf[i]);}write(cfd,buf,n);}close(lfd);close(cfd);return 0;
}

连接命令:nc 192.168.0.2 6666

linux的基础知识——CS模型流程图相关推荐

  1. 权限认证php,2016年Linux认证基础知识:php做权限管理

    2016年Linux认证基础知识:php做权限管理 在学习Linux认证过程中,每个人会遇到每个人不同的问题,或小或大,那么你知道在Linux下,php怎么做权限管理?下面跟yjbys小编来看看最新的 ...

  2. Linux系统基础知识

    Linux系统基础知识 1.在Linux系统中,以文件方式访问设备.   2. Linux内核引导时,从文件 /etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用 ino ...

  3. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  4. Linux操作系统基础知识学习

    Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...

  5. Linux常用基础知识必备三之常用指令及操作

    Linux常用基础知识必备三之常用指令及操作 1.vi和vim vi如何使用 vi几种模式下的操作指令 命令模式进入编辑模式 命令模式下的快捷键 底行模式(指按了esc键之后输入按键:后出现) 字符串 ...

  6. linux系统下io的过程,Linux系统基础知识:IO调度

    Linux系统基础知识:IO调度 IO调度发生在Linux内核的IO调度层.这个层次是针对Linux的整体IO层次体系来说的.从read()或者write()系统调用的角度来说,Linux整体IO体系 ...

  7. Linux入门基础知识

    注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...

  8. Linux驱动 简单的Linux驱动基础知识

    Linux驱动 简单的Linux驱动基础知识 一.简述         记--Linux驱动学习笔记. Linux驱动程序初始化硬件设备,并提供硬件控制接口给更上一层的应用调用. 例如使用QT应用程序 ...

  9. 只要你认真看完一万字☀️Linux操作系统基础知识☀️分分钟钟都吊打面试官《❤️记得收藏❤️》

    只要你认真看完一万字☀️Linux操作系统基础知识☀️分分钟钟都吊打面试官<❤️记得收藏❤️> 目录

最新文章

  1. 再记一次ceph object unfound的艰辛历程
  2. python显示当前时间
  3. 交换机4种网络结构:级联、端口聚合、堆叠、分层—Vecloud微云
  4. ASP.NET jQuery 食谱15 (通过控件CustomValidator验证CheckBoxList)
  5. java代码求IP和mac地址
  6. Java代码动态分析JProfiler 13 for Mac
  7. LINUX系统一一常用命令
  8. 龙蜥操作系统(Anolis OS)正式登陆阿里云公共云
  9. Android在自定义View(SurfaceView)中实现进度条Progress
  10. Shadow-插件化框架分析
  11. yigo基础学习笔记1
  12. 花旗银行java面试_花旗金融—面经(已offer)
  13. ECharts地图,自定义map地图显示不同图标点,点击标点显示不同弹框
  14. android 电话表情,歪,小人打电话表情包完整版下载
  15. 【opencv-python 6】 获取RIO、泛洪填充
  16. mysql小版本升级补丁操作
  17. 想用c做能存档的小游戏?来学习文件操作吧。
  18. 如何删除CSDN自己上传的资源(2021年12月29亲测有效)
  19. 一张图,三分钟看懂什么是动态IP,内网和外网
  20. 笔记 c++ 中 _in_ 含义

热门文章

  1. LeetCode 1722. 执行交换操作后的最小汉明距离(并查集)
  2. LeetCode 552. 学生出勤记录 II(动态规划)
  3. LeetCode 1534. 统计好三元组
  4. LeetCode 978. 最长湍流子数组(DP)
  5. LeetCode 1002. 查找常用字符(哈希)
  6. 索引 Index -- 快速查找数据
  7. 江小白包装设计原型_雪碧和江小白的品牌跨界合作之旅可谓是一场品牌包装的视觉盛宴...
  8. java对象持久化技术_Java对象持久化技术Hibernate 一
  9. html-css练习题(天天生鲜静态网页制作)文末有完整版代码地址链接
  10. Sklearn.metrics评估方法