07 2021 档案

摘要:1.概念 分包:发送方发送字符串”helloworld" ,接收方却接收到了两个字符串”hello" 和”world"。 粘包:发送方发送两个字符串”hello" +” world" ,接收方却一次性接收到 了” helloworld" 但是TCP传输数据能保证几点: 1) 顺序不变,例如发送方发送 阅读全文
posted @ 2021-07-17 22:40 Creature_lurk 阅读(336) 评论(0) 推荐(0)
摘要:1.send函数用于把数据通过socket发送给对端。不论是客户端还是服务端,应用程序都用send函数来向TCP连接的另一端发送数据。 函数声明: ssize_t send(int sockfd, const void *buf, size_t len, int flags); sockfd为已建立 阅读全文
posted @ 2021-07-17 21:12 Creature_lurk 阅读(552) 评论(0) 推荐(0)
摘要:1.listen listen函数把主动连接socket变为被动连接的socket,使得这个socket可以接受其它socket的连接请求,从而成为一个服务端的socket。 //函数声明 int listen(int sockfd, int backlog); 返回:0-成功, -1-失败 参数s 阅读全文
posted @ 2021-07-17 04:30 Creature_lurk 阅读(350) 评论(0) 推荐(0)
摘要:1.作用 服务端把用于通信的地址和端口绑定到socket上。 //函数声明 int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen); 参数sockfd,需要绑定的socket。 参数addr,存放了服务端用于通信的地址和 阅读全文
posted @ 2021-07-17 04:20 Creature_lurk 阅读(618) 评论(0) 推荐(0)
摘要:1.sockaddr结构体 struct sockaddr{ unsigned short sa_family; //地址类型,AF_XXX char sa_data[14]; //14字节的端口和地址 } 2.sockaddr_in结构体 struct sockaddr_in{ short int 阅读全文
posted @ 2021-07-17 04:10 Creature_lurk 阅读(77) 评论(0) 推荐(0)
摘要:1.字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,一个32位整数由4 个字节组成。 内存中存储这4个字节有两种方法:一种是将低序字节存储在起始地址,这 称为小端(little-endian) 字节序;另一种方法是将高序字节存储在起始地址,这称为 大端(big-endian) 字节序。 阅读全文
posted @ 2021-07-17 02:34 Creature_lurk 阅读(299) 评论(0) 推荐(0)
摘要:1.socket函数用于创建一个新的socket,也就是向系统申请一个socket资源。socket函数用户客户端和服务端。 //函数声明 int socket(int domain, int type, int protocol); 参数说明: domain:协议域,又称协议族(family)。常 阅读全文
posted @ 2021-07-17 02:20 Creature_lurk 阅读(1461) 评论(0) 推荐(0)
摘要:1.有时会见到这样的主函数,十分好奇里面的参数argc、argv和envp代表什么 int main(int argc,char *argv[],char*envp[]) { return 0; } 查阅资料,argc和argv中的arg指的是"参数", 其中,argc为整数,用来统计运行程序时送给 阅读全文
posted @ 2021-07-17 01:39 Creature_lurk 阅读(948) 评论(0) 推荐(0)
摘要:1.socket编程概念 socket就是插座(中文翻译为套接字),运行在计算机中的两个程序通过socket建立起一个通道,数据在通道中传输。 socket把复杂的TCP/IP协议簇隐藏了起来,对程序员来说,只要用好socket相关函数,就可以完成网络通信。 2.socket分类 socket提供了 阅读全文
posted @ 2021-07-17 01:13 Creature_lurk 阅读(84) 评论(0) 推荐(0)
摘要:1.在类模板中使用与class完全一致,没有差别 templete <typename T> templete <class T> //上述二者完全一致 2.告诉 c++ 编译器,typename 后面的字符串为一个类型名称,而不是成员函数或者成员变量 //比如以下代码 template<typen 阅读全文
posted @ 2021-07-16 21:43 Creature_lurk 阅读(54) 评论(0) 推荐(0)
摘要:1.为什么引入inline关键字 在 c/c++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数。 栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。 在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导 阅读全文
posted @ 2021-07-16 21:24 Creature_lurk 阅读(151) 评论(0) 推荐(0)
摘要:1.将xxx替换为xxx_s //比如strcpy替换为strcpy_s 2.右键工程名->属性->C/C++->预处理器->预处理器定义->编辑->添加 _CRT_SECURE_NO_DEPRECATE_CRT_SECURE_NO_WARNINGS 3.在文件中加入#pragma warning( 阅读全文
posted @ 2021-07-16 20:51 Creature_lurk 阅读(109) 评论(0) 推荐(0)