基于linux的C语言

本文详细介绍了基于Linux的C语言在计算机网络和SQLite数据库操作方面的应用。涵盖了网络基础知识,包括结构体系、IP地址、传输层,深入讲解了UDP和TCP通信的原理与实例,如三次握手和四次挥手。此外,还详细阐述了TCP服务器模型,如循环服务器和并发服务器。在数据库方面,讲解了SQLite3常用命令以及如何通过C语言编程实现数据库的创建、插入、查询、修改和删除操作。
摘要由CSDN通过智能技术生成

目录

一,计算机网络的基本概念

二,计算机网络的结构

        1,结构体系       ​

        2,功能概述 

        3,ip地址

        4,传输层

三,udp通信和tcp通信

        1,udp通信

        2,UDP通信过程

         3,UDP通信的实例

                3.1,客服端

                3.2, 接收端

        4,TCP通信

        5,TCP通信的过程

                5.1,在连接时的三次握手 

                5.2,在断开连接时的四次挥手

        6,TCP通信的实例

                6.1,客户端

                6.2,服务端

         7.TCP的服务器模型

                7.1,循环服务器模型

                7.2,并发服务器模型

        8,IO模型

                8.1,阻塞IO

                8.2,非阻塞IO

                8.3,IO多路复用

四,sqlite数据库

         1,sqlite3数据库常见的命令符

                1.1,sqlit3命令的进入

                 1.2,sqlite3 命令 的退出

                 1.3,查看帮助

                1.4,其他操作

        2,创建表

        3,向表中添加数据

        4,查询表中的数据

        5,修改表中的数据

        6,删除数据

        7,删除表 

五,使用程序编程实现数据库

        1,创建数据表

        2,插入数据 

        3,修改数据

        4,查询数据 

        5,打开数据库

        6,关闭数据库


一,计算机网络的基本概念

        计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。

        网络:由若干个结点和连接这些结点的链路组成。

        计算机网络的基本功能:实现数据数据通信和资源共享。

        计算机网络的分类:

                分布范围:局域网,城域网,广域网。

                拓扑结构:总线型,星型,环型,网状型。

                交换方式:电路交换,报文交换,分组交换。

                传输方式:点对点,广播式

        计算机网络的性能指标:

                速率:速率即数据率或称数据传输率或比特率,单位 bps、kb/s,Mb/s,Gb/s,Tb/s。

                带宽:信道最大的传输率,单位bps。

                吞吐量:在单位时间内通过某个网络的数据量。

                时延:数据从网络的一端到另一端所需的时间。

                往返时间:数据从发送端开始到接收端确认总共经历的时延。

                利用率:信道利用率,网络利用率。

二,计算机网络的结构

          1,结构体系               2,功能概述 

层次                                                                 作用
应用层 通过进程间的交互完成特定网络应用,以及提供网络与用户软件间的接口服务,
表示层 提供格式化的表示和转换数据服务。如:数据的压缩和解压缩、加密和解密等工作
会话层 提供访问验证和会话管理在内的建立以及维护应用之间的通信机制。如服务器验证用户的登录
传输层 差错控制/恢复、流量控制、提供可靠的传输
网络层 为要传输的分组选择一条合适的路径,使发送分组能够正确无误地按照给定的目的地址找到目的主机,实现数据分组和路由选择。
数据链路层 数据链路层负责在两个相邻的结点之间的链路上实现无差错的数据帧传输
物理层 为上一层提供物理连接

        3,ip地址

        一个主机的IP地址等于一个网络号(网络号用于区别不同的网络)加一个主机号(主机号用于区分网络号中 不同的主机)

        分类:

类型 网络号 主机号 范围
A 8位 24位 1.0.0.0-——126.0.0.0
B 16位 16位 128.0.0.0-——191.255.0.0
C 24位 8位 192.0.0.0-223.255.255.0
D 多播地址 224.0.0.0——239.255.255.255
E 保留地址 240.0.0.0——247.255.255.255

        4,传输层

        udp协议:

                不可靠的传输协议;

                传输数据时无需建立连接;

                效率高,但可能出现丢包,数据报错,顺序错等问题。

        TCP协议:

                可靠的传输协议;

                提供面向连接的服务,即在传输数据前需要建立连接,传输结束后需要释放连接。 

三,udp通信和tcp通信

        1,udp通信

        2,UDP通信过程

UDP通信过程
    //客户端
        1. socket() 创建套接字
       #include <sys/types.h>          //See NOTES 
       #include <sys/socket.h>
       int socket(int domain, int type, int protocol);

        2. bind() 绑定套接字
        
	#include <sys/types.h>         //See NOTES 
       #include <sys/socket.h>
       int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
        3. 通信 recvfrom() sendto()
        
       #include <sys/types.h>
       #include <sys/socket.h>
       ssize_t recv(int sockfd, void *buf, size_t len, int flags);
       ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
       struct sockaddr *src_addr, socklen_t *addrlen);
       ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);
       
       sendto:
       #include <sys/types.h>
       #include <sys/socket.h>
       ssize_t send(int sockfd, const void *buf, size_t len, int flags);
       ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
       const struct sockaddr *dest_addr, socklen_t addrlen);
       ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);


        4. close
    //接收端
        1. socket() 创建套接字
        2.绑定套接字
        3. 通信 sendto() recvfrom()
        4. close()

         3,UDP通信的实例

                3.1,客服端

#include <arpa/inet.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <stdio.h>

int main()
{

	//1、创建套接字,在当前进程中有一个文件描述符代表一套通信协议
	int sockfd;
	sockfd = socket(AF_INET,SOCK_DGRAM,0);

	if(sockfd < 0)
	{
		printf("error\n");
	}

	//2、绑定套接字(把本地网络信息绑定上套接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值