const用法

Comment
const 修饰的成员变量只能在构造函数的参数列表中初始化。 const 修饰的成员函数不能改变成员变量的值。 定义: void function(void) const const 修饰的对象只能调用常成员函数,不能调用非 常成员函数

Read More

static用法

Comment
static修饰局部变量时,用来延长生命周期。 修饰全局变量或者函数时,用来限制作用域 修饰静态成员变量的时候,所有的类对象共享此资源。 访问此资源时,既可以用类访问,也可以用对象访问。 记得要在类外初始化 static修饰静态成员函数的时候,静态成员函数没有this指针,也就不能访问非静态资源。 Q:什么时候使用静态成员函数? : 当不需要实例化,不需要访...

Read More

c++函数增强部分

Comment

c++的函数在声明的时候可以定义默认值参数有几个注意事项
1.当函数的定义和声明分开时默认值参数只能在声明处定义
2.如果某个参数时默认参数那么它后面的参数都必须是默认参数


在同一目录下同时建立a.c和b.c而且同时声明了相同函数名的函数如果用c语言在main.c中想调用这两个文件中的相同函数是很难办到的即使你在某个文件中使用了static关键字表示作用域范围也是很不方便的在C++中的命名空间就很好的解决了这点

Read More

tcp粘包解决方案

Comment
tcp是可靠的,面向字节流的协议,传输过程中可能就会 完整的服务器端代码: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475...

Read More

牢骚

Comment
真的不喜欢数据结构啊啊 链表什么的真讨厌啊啊啊啊 made真的恶心,各种结构体,遍历真的无趣T_T 还是先学着后面的吧,udp的局域网聊天先放一放,本来想着能实现也是很不错的,但是代码也不完整,等以后回头了,把这块和学生管理系统那块再统一看看T_T

Read More

并发多进程服务器网络聊天模型

Comment

这两天在想到底是否学会了怎么验证你学会了我一直在纠结但是昨天早上醒来我觉得我可能迄今为止做错了很多事比葫芦画瓢谁都会靠着自己脑中残留的记忆来照着写真的是硬实力吗我不觉得我认为只有自己写出来了才算你牛逼

这两天虽然只写了不多的代码但我觉得让我受益匪浅把遇到的问题即时记录下来则会很有帮助
1.warning的警告要看在哪里警告警告的提示跟函数参数的出入在哪我的问题在于编译时提示我recvfrom的参数有问题

Read More

环形队列数据读写实现

Comment
在此项目中,创建了一个信号量集合并包含了三个信号量. 使用一个信号量 (SEM_MUTEX) 用于共享内存的互斥. 使用两个信号量(SEM_EMPTY 与 SEM_FULL)用于环形队列的同步 SEM_EMPTY = 0,表示目前队列只有0个数据为空(本人倾向于记SEM_CURRENT=0,更方便记忆。) 当 SEM_FULL = 0 时,表示目前队列...

Read More

网络编程之字节序转换API

Comment
ip字符串转换网络字节序: 12int inet_aton(const char *cp, struct in_addr *inp); [addr to network]功能:将cp指向的IP字符串转成网络字节inp保存的地址中。 网络字节序转换IP字符串 1234567char *inet_ntoa(struct in_addr in); [...

Read More

网络编程之字节符转换API

Comment
IP字节符转换为网络

Read More

进程

Comment
所谓进程,顾名思义,就是描述一个程序的执行过程。 进程与程序的区别: 程序是存储在磁盘资源中的静态指令集合,没有执行的概念 进程是程序的动态过程,包括创建,凋亡等等 并发与并行的区别: 并发是指在同一时间段有多个任务同时执行,由操作系统的调度算法来实现,比较经典的就是时间片轮转。 并行是指在多个处理器核心下同时执行任务,比如一个cpu4核心,那么可以同...

Read More