-
GCC编译C/C++程序
所属栏目:[语言] 日期:2023-05-25 热度:2857
GCC 编译器并未提供给用户可用鼠标点击的界面窗口,要想调用 GCC 编译器编译 C 或者 C++ 程序,只能通过执行相应的 gcc 或者 g++ 指令。本节将重点给大家讲解如何编写 gcc 或者 g++ 指令来编译 C、C++ 程序。
同样[详细] -
GCC -std编译标准
所属栏目:[语言] 日期:2023-05-25 热度:7237
要知道,任何一门编程语言都有相关的组织和团体在不停的维护和更新。原因很简单,时代在发展,编程语言如果停滞不前,最终就会被淘汰。
C++ 语言的发展也历经了很多个版本,包括 C++98、C++03(C++98 的修订版)、[详细] -
gcc 和 g++ 的区别
所属栏目:[语言] 日期:2023-05-25 热度:1983
实际使用中我们更习惯使用 gcc 指令编译 C 语言程序,用 g++ 指令编译 C++ 代码。需要强调的一点是,这并不是 gcc 和 g++ 的区别,gcc 指令也可以用来编译 C++ 程序,同样 g++ 指令也可以用于编译 C 语言程序。
那[详细] -
GCC 自动识别的常用扩展名
所属栏目:[语言] 日期:2023-05-25 热度:9299
对于执行 C 或者 C++ 程序,需要借助 gcc(g++)指令来调用 GCC 编译器。并且对于以 .c 为扩展名的文件,GCC 会自动将其视为 C 源代码文件;而对于以 .cpp 为扩展名的文件,GCC 会自动将其视为 C++ 源代码文件。[详细]
-
手动安装GCC编译器
所属栏目:[语言] 日期:2023-05-25 热度:129
注意,此方式需要耗费的时间较长(几个小时),但支持安装指定版本的 GCC 编译器,并适用于大多数 Linux 发行版(不同之处会有额外提示);同时,如果读者想对已安装的 GCC 编译器进行版本升级,也可以使用此方式。[详细]
-
快速安装GCC编译器
所属栏目:[语言] 日期:2023-05-25 热度:4102
要知道,每个 Linux 发行版都有自己的软件包管理工具,比如 CentOS 系统的 yum 包管理器、Ubuntu 系统的 apt 包管理器等等,并且大多数 Linux 发行版都提供有 GCC 编译器的二进制软件包。因此,我们可以直接“傻[详细]
-
GCC 是一个C语言编译器
所属栏目:[语言] 日期:2023-05-25 热度:1787
谈到 GCC,就不得不提 GNU 计划。GNU 全称 GNU's Not UNIX,又被称为“革奴计划”,由理查德·斯托曼于 1983 年发起。GNU 计划的最终目标是打造出一套完全自由(即自由使用、自由更改、自由发布[详细]
-
基于UDP的接收和发送函数
所属栏目:[语言] 日期:2023-05-25 热度:181
创建好 TCP 套接字后,传输数据时无需再添加地址信息,因为 TCP 套接字将保持与对方套接字的连接。换言之,TCP 套接字知道目标地址信息。但 UDP 套接字不会保持连接状态,每次传输数据都要添加目标地址信息,这相当于[详细]
-
谈UDP和TCP
所属栏目:[语言] 日期:2023-05-25 热度:4950
TCP 是面向连接的传输协议,建立连接时要经过三次握手,断开连接时要经过四次握手,中间传输数据时也要回复 ACK 包确认,多种机制保证了数据能够正确到达,不会丢失或出错。
UDP 是非连接的传输协议,没有建立连接[详细] -
TCP数据的传输过程分析
所属栏目:[语言] 日期:2023-05-24 热度:7512
建立连接后,两台主机就可以相互传输数据了。
TCP 套接字的数据交换过程
首先,主机A通过1个数据包发送100个字节的数据,数据包的 Seq 号设置为 1200。主机B为了确认这一点,向主机A发送 ACK 包,并将 Ack 号设[详细] -
数据的“粘包”问题
所属栏目:[语言] 日期:2023-05-24 热度:1713
假设我们希望客户端每次发送一位学生的学号,让服务器端返回该学生的姓名、住址、成绩等信息,这时候可能就会出现问题,服务器端不能区分学生的学号。例如第一次发送 1,第二次发送 3,服务器可能当成 13 来处理,返[详细]
-
socket阻塞模式
所属栏目:[语言] 日期:2023-05-24 热度:8244
对于TCP套接字(默认情况下),当使用 write()/send() 发送数据时:
1) 首先会检查缓冲区,如果缓冲区的可用空间长度小于要发送的数据,那么 write()/send() 会被阻塞(暂停执行),直到缓冲区中的数据被发送到目[详细] -
socket缓冲区
所属栏目:[语言] 日期:2023-05-24 热度:8995
每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。
write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区[详细] -
Windows下数据的接收和发送
所属栏目:[语言] 日期:2023-05-24 热度:7704
Windows 和 Linux 不同,Windows 区分普通文件和套接字,并定义了专门的接收和发送的函数。
从服务器端发送数据使用 send() 函数,它的原型为:
int send(SOCKET sock, const char *buf, int len, int flags);[详细] -
Linux下数据的接收和发送
所属栏目:[语言] 日期:2023-05-24 热度:1977
Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入数据,使用 read() 可以从套接字中读取数据。
前面我们说过,两台计算机之间的通信相当于两个套接字之间的通信,在服务器端用 write() 向套接[详细] -
accept() 函数
所属栏目:[语言] 日期:2023-05-24 热度:9077
当套接字处于监听状态时,可以通过 accept() 函数来接收客户端请求。它的原型为:
int accept(int sock, struct sockaddr *addr, socklen_t *addrlen); //Linux
SOCKET accept(SOCKET sock, struct sockaddr *a[详细] -
listen() 函数
所属栏目:[语言] 日期:2023-05-24 热度:1786
通过 listen() 函数可以让套接字进入被动监听状态,它的原型为:
int listen(int sock, int backlog); //Linux
int listen(SOCKET sock, int backlog); //Windows
sock 为需要进入监听状态的套接字,backlog [详细] -
Linux 下的 socket() 函数
所属栏目:[语言] 日期:2023-05-24 热度:9287
在 Linux 下使用 <sys/socket.h> 头文件中 socket() 函数来创建套接字,原型为:
int socket(int af, int type, int protocol);
1) af 为地址族(Address Family),也就是 IP 地址类型,常用的有 AF_INET 和 AF[详细] -
IP、MAC和端口号
所属栏目:[语言] 日期:2023-05-24 热度:2325
IP地址是 Internet Protocol Address 的缩写,译为“网际协议地址”。
目前大部分软件使用 IPv4 地址,但 IPv6 也正在被人们接受,尤其是在教育网中,已经大量使用。
一台计算机可以拥有一个独立的 [详细] -
OSI模型把网络通信教程
所属栏目:[语言] 日期:2023-05-24 热度:6164
如果你读过计算机专业,或者学习过网络通信,那你一定听说过 OSI 模型,它曾无数次让你头大。OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”。
OSI 模型把网络通信的工作分为 7 层[详细] -
数据报格式套接字
所属栏目:[语言] 日期:2023-05-24 热度:1799
数据报格式套接字(Datagram Sockets)也叫“无连接的套接字”,在代码中使用 SOCK_DGRAM 表示。
计算机只管传输数据,不做数据校验,如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救[详细] -
面向连接的套接字
所属栏目:[语言] 日期:2023-05-24 热度:7171
流格式套接字(Stream Sockets)也叫“面向连接的套接字”,在代码中使用 SOCK_STREAM 表示。
SOCK_STREAM 是一种可靠的、双向的通信数据流,数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以[详细] -
什么是 socket
所属栏目:[语言] 日期:2023-05-24 热度:6939
socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向[详细]
-
使用折半查找来代替顺序查找
所属栏目:[语言] 日期:2023-05-24 热度:6209
如果你善于思考就会发现该算法在查找插入位置时,采用的是顺序查找的方式,而在查找表中数据本身有序的前提下,可以使用折半查找来代替顺序查找,这种排序的算法就是折半插入排序算法。
该算法的具体代码实现为:[详细] -
哈希表的构建
所属栏目:[语言] 日期:2023-05-23 热度:2281
哈希表的建立同函数类似,把函数中的 x 用查找记录时使用的关键字来代替,然后将关键字的值带入一个精心设计的公式中,就可以求出一个值,用这个值来表示记录存储的哈希地址。即:
数据的哈希地址=f(关键字的值)[详细]