![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++网络编程
goldfish3
这个作者很懒,什么都没留下…
展开
-
Linux网络开发——TCP/IP基础
一:网络模型(ISO/OSI参考模型)开放系统互联模型(ISO/OSI参考模型,也叫七层网络模型)层次作用传输单位(统称为PDU)例子和类比应用层与应用程序界面沟通,以达到展示给用户的目的:HTTP、HTTPS、FTP、SSH、SMTP、TELNET、POP3等APDU经理:写了一份邮件草稿表示层处理数据格式、压缩、数据加密PPDU助理:修改错字,对格...原创 2019-04-10 09:48:29 · 244 阅读 · 0 评论 -
c++知识盲点总结
1:字节对齐(1)自身对齐值:每种数据类型,都有自己的对齐值,基础数据类型的对齐值就是其字节数,结构体类型的对齐值是其成员变量中对齐值最大的那个。(2)指定对齐:使用 #pragma pack (value) 可以指定对齐值value。举个例子:struct B{ 7 char b; 8 ...原创 2019-09-27 14:28:19 · 183 阅读 · 0 评论 -
UNIX编程(一)实现最基本的tcp server
1: 先看下客户端和服务端基本的交互流程两个基础结构体:这两个结构体其实是等价的,用于保存socket绑定信息,包括协议族,ip地址,端口。都占用了32个字节(算内存对齐),但 sockaddr 将端口和ip地址写在了一起,保存在 sa_data 中,不便于操作。但操作系统因为遗留问题,所有网络编程接口接收参数都是 sockaddr,因此在定义的时候,会使用 sockaddr_in ,使用的...原创 2019-09-12 11:35:42 · 179 阅读 · 0 评论 -
函数对象
函数对象也叫仿函数,本质是使用重载 () 运算符实现的class Person{public: void operator()(){ cout << "hello" << endl; }};int main(){ Person()();}...原创 2019-06-07 11:24:38 · 1386 阅读 · 0 评论 -
c++中的输入和输出
输入 cincin代表缓冲区,先来看一个常用的例子int main(){ char input[1024]; char c; cout << "input:" << endl; while (cin.peek() != '\n') { cin >> input; cout << in...原创 2019-05-29 13:22:13 · 364 阅读 · 0 评论 -
STL中的常用容器
string string 构造函数string();string(const string& str);string(const char* s);string(int n,char c);赋值操作(运算符重载)string& operator=(const char* s);string& operator=(const string& s);...原创 2019-06-05 17:47:04 · 1277 阅读 · 0 评论 -
c++中的类型转换和异常捕获
类型转换静态类型转换 static cast可以用于基础数据类型和父子数据类型之间的转换,如果是不是上面两种形式,就不允许转换动态类型转换 dynamic cast只有发生多态的情况,才可以使用,其他情况都不能使用class Father{};class Son:public Father{};int main(int argc, const char * argv[]) { ...原创 2019-05-28 13:34:26 · 342 阅读 · 0 评论 -
c语言基础补全
大学学了c之后,一直没有好好复习过,一些特性和语法都忘了,这里总结下。1:typedf的用法给已知类型取别名struct Person{ char name[64]; int age;}typedf struct Person myPerson;typedf struct Person{ char name[64]; int age;}myPerson;同样是给已...原创 2019-05-27 16:50:51 · 1220 阅读 · 0 评论 -
c++第四天(运算符重载)
运算符重载运算符重载有两种方式使用类的成员函数使用全局函数class Person{public: int age = 0; Person(){}; Person(int age):age(age){}; //使用类的成员函数进行运算符重载 Person operator+(Person& p){ Person tmp; ...原创 2019-05-17 22:44:19 · 173 阅读 · 0 评论 -
c++第七天(模板)
泛型可以使用class关键字声明,也可以使用 typenametemplate<class T>void myswap(T& a, T& b){ T tmp = a; a = b; b = tmp;}int main(){ int a=0,b=20; //调用泛型的时候,会使用自动类型推导 myswap(a,b);}函数模板...原创 2019-05-27 13:27:51 · 156 阅读 · 0 评论 -
c++第六天(多态)
一般来说,在其他语言中,多态就是父类指针指向了子类对象但是对于c++来说,对象不一定是在堆区,还有可能在栈区,那么这时候的多态会是什么样的呢?多态和虚函数c++中的多态分为 静态多态 和 动态多态静态多态:实质上就是函数重载一般说的多态实质上指的是 动态多态先来看一个例子class Father{public: void who(){ cout <...原创 2019-05-26 17:31:20 · 133 阅读 · 0 评论 -
c++第五天(继承相关)
继承继承模式:java和oc好像都没有这个概念,准确的说,java和oc中的继承都相当于c++的公有继承。c++不愧是所有语言的爸爸继承中构造函数的调用顺序先调用父类构造函数再调用子类构造函数但是,所谓 儿子不能决定父亲的生死,子类无法继承父类的构造和析构函数。class Animal{private:string name;int age;public: An...原创 2019-05-26 13:53:13 · 170 阅读 · 0 评论 -
c++第二天
宏的缺陷和内联函数:由于宏会直接对调用的位置进行替换,因此会引出一系列问题#define ADD(x,y) x+y#define COMPARE(a,b) ((a)<(b))?(a):(b)int main(){ int res = ADD(1,2) * 3; //结果是7,1 + 2 * 3 = 7 int a=10,b=20; int res2 = COMPARE(++...原创 2019-05-12 22:18:54 · 172 阅读 · 0 评论 -
c++第一天
一:最简单的 hello worldinclude <iostream>using namespace std;int main(){ cout << "hello world" << endl; return EXIT_SUCCESS; //其实就是0}二:cpp中使用c函数如果想在cpp文件中使用c语言函数,需要加上如下几行(vs上需要,...原创 2019-05-12 13:37:47 · 211 阅读 · 0 评论 -
c++第三天:
静态成员变量:原创 2019-05-16 15:53:43 · 137 阅读 · 0 评论 -
Linux网络编程模型
网络IO模型一共有四种:阻塞IO模型非阻塞IO模型多路IO复用模型异步IO模型1:阻塞IO模型IO执行分为两个阶段:等待数据:比如还没有收到一个完整的TCP包,系统内核就要等待足够的数据到来。拷贝数据:数据准备好了,系统将数据从内核拷贝到用户内存中,然后系统内核返回结果。阻塞式IO要等拷贝数据完成后,进程才接触阻塞状态。大部分的socket接口都是阻塞型的,阻塞状态下,进...原创 2019-09-16 22:07:00 · 175 阅读 · 0 评论