C语言网络编程(1)
c_python吧
全部回复
仅看楼主
level 9
一、理解网络编程和套接字
1、什么是网络编程?
网络编程就是编写程序使两台联网的计算机能够相互交换数据!
2、什是是套接字?
套接字是网络数据传输用 的软件设备,即使我们对网络传输原理一无所知,也一样可以通过套接字完成数据的传输
3、在数据传输工程中,套接字起到了什么样的作用?
举一个简单的例子,我们在日常生活中会有给手机等移动终端充电的需求,那么我们应该怎样满足充电的需求呢?
我们需要把【手机充电器】插到【插座】上,从而【在电网中获取电力供给】
在这个例子中,【手机充电器】是连接手机(用户)与电网接口(插座)的中间介质,是用于获取供给的工具;
【插座】是电网与外界联通的接口(想象成瓶装水的瓶口,我们通过瓶口才能从瓶中获取水),没有这个接口,手机(用户)就无法直接和电网进行能源的交互;
而【在电网中获取电力供给】即是我们插上手机充电器的目的(充电)
类似地,我们将【套接字】连接到【互联网接口】上,从而【在互联网中获取传输信息】,就是这样一个过程
总结:套接字(Socket)是网络通信的基础,*相当于在发送端和接收端之间建立了一个管道,来实现数据和命令的相互传递*
二、计算机网络基础知识
1、网络体系结构
目前较为主流的网络体系结构——ISO/OSI参考模型以及TCP/IP协议族,都采用了分层设计和实现的方式,例如:
ISO/OSI参考模型 TCP/IP协议族
第七层:应用层 --------------
第六层:表示层 ---------------------------- 应用层
第五层:会话层 --------------
第四层:传输层 ---------------------------- 传输层
第三层:网络层 ---------------------------- 网络层(网络互连层)
第二层:数据链路层 -------------
第一层:物理层 ---------------------------- 链路层(网络接口层)
分层设计的好处:各层独立设计和实现,只要保证邻层之间【调用规范、调用接口】不变,即可方便、灵活改变某层的内部实现。
2、网络协议
网络协议是计算机网络中进行数据交换而建立的规则、标准或者约定的集合。网络协议包含三个要素:【语法】、【语义】以及【时序】
@1、语法:规定了用户数据与控制信息的结构与格式
@2、语义:用来解释控制信息每个部分的意义,规定了需要发出何种控制信息,以及需要完成的动作和做出什么样的响应
@3、时序:时序是对事件发生顺序的详细说明,可称之为“同步”
三、C语言中的网络编程
1、导入Winsock2.h库以及Winsock2.h库的初始化
进行Winsock编程时,首先必须调用WSAStartup函数,设置程序中用到的Winsock版本并且初始化响应版本的库
基本用法如下:
#include<winsock2.h>
int WSAStartup(WORD wVersionRequested , LPWSADATA lpWSAData);
(wVersionRequested:需要用到的Winsock版本信息)
(lpWSAData:WSADATA结构体变量的地址值)
成功时该函数返回0,失败时返回非零的错误代码值
2021年11月02日 14点11分 1
level 8
好帖,学到了[太开心]
2021年11月02日 14点11分 2
level 9
顶一顶
2021年11月02日 15点11分 3
level 9
催更,催更
2021年11月03日 05点11分 4
level 9
gkd[滑稽]
2021年11月03日 05点11分 5
level 8
催更[太开心]
2021年11月03日 06点11分 6
level 9
催更[滑稽]
2021年11月04日 09点11分 7
1