【基本tcp/ip模型】c.s模型(1)
@TOC
前言
网络编程是基于tcp/ip协议来完成的
网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。 网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。
提示:以下是本篇文章正文内容,下面案例可供参考
一、c.s模型和tcp/ip协议是什么?
重要性:TCP/IP是今天的互联网的基石,没有这个就上不了网了
概念:tcp/ip指的是整个网络传输体系。而tcp协议和ip协议就是单单的两个协议
特点:面向连接的,可靠的,基于字节流的传输层协议
client/server ----- 客户端/服务器模型
这些我们下载客户端的,都属于c/s模型的一个应用
c/s模型其实是概念层面的,实现层面可以是基于任何的网络协议。
演示:
套接字编程与socket编程
socket中文->套接字,也统称叫网络编程
二、网络头文件 网络库
最底层的网络函数,大家用QT MFC wpf,或者百度下载的很多其他的封装好的网络库,都是对咱们讲的这些最本质的网络函数的二次封装,咱们讲的是通用的,讲完这个大家也可以自己封装函数库给别人用了。
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
WinSock2网络库版本(winsock.h)
目前网络库版本:1.0 1.1 2.0 2.1 2.2
大家可以挑选自己电脑可以用的网络库使用
导入库
ws2_32.lib(第二版本)
wsock32.lib(第一版本)
大家可以挑选自己电脑可以用的网络库使用
三、打开网络库 WSAStartup
功能:打开网络库/启动网络库,启动了这个库,这个库里的函数/功能才能使用
w windows
s socket
a Asynchronous 异步
startup 启动
同步和异步概念:
同步:你执行完后我才能执行
异步:可以一起执行,不影响使用
//函数原型
//参数1:我们要使用的库的版本
//参数2:系统通过这个参数给我们一些配置信息
int WSAStartup(
WORD wVersionRequired,
LPWSADATA lpWSAData
);
代码:
WORD wVersionRequired = MAKEWORD(2,2);//使用宏“MAKEWORD”赋值进WORD中
WSADATA WSAData;//参数二其实是WSADATA的指针
WSAStartup(wVersionRequired,&WSAData);
MAKEWORD
MAKEWORD(主版本,副版本);
使用自己电脑可以使用的版本
WSADATA
结构体成员:
wVersion我们要使用的版本
wHighVersion系统能提供给我们最高的版本
iMaxSockets返回可用的socket的数量,2版本之后就没用了
iMaxUdpDgUDP数据报信息的大小,2版本之后就没用了
lpVendorInfo供应商特定的信息,2版本之后就没用了
szDescription szSystemStatus当前库的描述信息,2.0是第二版的意思
返回值
返回0为执行正确
错误:
相应的去if…else 或switch
四、版本校验
//根据上可以指定WSADATA的成员得知版本号存储位置
if(2 != HIBYTE(WSAData.wVersion) || 2 != LOBYTE(WSAData.wVersion))
{
printf("版本号错误!!!");
WSACleanup();//关闭库
return -1;
}
宏解释:
HIBYTE是副版本
LOBYTE是主版本
根据自己添加的WORD的本版是校验
WSACleanup();//关闭库
总结
以上就是今天要讲的内容,本文仅仅简单介绍了打开网络库头文件,打开网络库,版本校验.请大家好好理解
- 点赞
- 收藏
- 关注作者
评论(0)