linux的基础知识——CS模型流程图
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模型流程图相关推荐
- 权限认证php,2016年Linux认证基础知识:php做权限管理
2016年Linux认证基础知识:php做权限管理 在学习Linux认证过程中,每个人会遇到每个人不同的问题,或小或大,那么你知道在Linux下,php怎么做权限管理?下面跟yjbys小编来看看最新的 ...
- Linux系统基础知识
Linux系统基础知识 1.在Linux系统中,以文件方式访问设备. 2. Linux内核引导时,从文件 /etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用 ino ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- Linux操作系统基础知识学习
Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...
- Linux常用基础知识必备三之常用指令及操作
Linux常用基础知识必备三之常用指令及操作 1.vi和vim vi如何使用 vi几种模式下的操作指令 命令模式进入编辑模式 命令模式下的快捷键 底行模式(指按了esc键之后输入按键:后出现) 字符串 ...
- linux系统下io的过程,Linux系统基础知识:IO调度
Linux系统基础知识:IO调度 IO调度发生在Linux内核的IO调度层.这个层次是针对Linux的整体IO层次体系来说的.从read()或者write()系统调用的角度来说,Linux整体IO体系 ...
- Linux入门基础知识
注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...
- Linux驱动 简单的Linux驱动基础知识
Linux驱动 简单的Linux驱动基础知识 一.简述 记--Linux驱动学习笔记. Linux驱动程序初始化硬件设备,并提供硬件控制接口给更上一层的应用调用. 例如使用QT应用程序 ...
- 只要你认真看完一万字☀️Linux操作系统基础知识☀️分分钟钟都吊打面试官《❤️记得收藏❤️》
只要你认真看完一万字☀️Linux操作系统基础知识☀️分分钟钟都吊打面试官<❤️记得收藏❤️> 目录
最新文章
- 再记一次ceph object unfound的艰辛历程
- python显示当前时间
- 交换机4种网络结构:级联、端口聚合、堆叠、分层—Vecloud微云
- ASP.NET jQuery 食谱15 (通过控件CustomValidator验证CheckBoxList)
- java代码求IP和mac地址
- Java代码动态分析JProfiler 13 for Mac
- LINUX系统一一常用命令
- 龙蜥操作系统(Anolis OS)正式登陆阿里云公共云
- Android在自定义View(SurfaceView)中实现进度条Progress
- Shadow-插件化框架分析
- yigo基础学习笔记1
- 花旗银行java面试_花旗金融—面经(已offer)
- ECharts地图,自定义map地图显示不同图标点,点击标点显示不同弹框
- android 电话表情,歪,小人打电话表情包完整版下载
- 【opencv-python 6】 获取RIO、泛洪填充
- mysql小版本升级补丁操作
- 想用c做能存档的小游戏?来学习文件操作吧。
- 如何删除CSDN自己上传的资源(2021年12月29亲测有效)
- 一张图,三分钟看懂什么是动态IP,内网和外网
- 笔记 c++ 中 _in_ 含义
热门文章
- LeetCode 1722. 执行交换操作后的最小汉明距离(并查集)
- LeetCode 552. 学生出勤记录 II(动态规划)
- LeetCode 1534. 统计好三元组
- LeetCode 978. 最长湍流子数组(DP)
- LeetCode 1002. 查找常用字符(哈希)
- 索引 Index -- 快速查找数据
- 江小白包装设计原型_雪碧和江小白的品牌跨界合作之旅可谓是一场品牌包装的视觉盛宴...
- java对象持久化技术_Java对象持久化技术Hibernate 一
- html-css练习题(天天生鲜静态网页制作)文末有完整版代码地址链接
- Sklearn.metrics评估方法