以前觉得网络很难,但是经过今天的学习,我觉得我又找回了自信
1,什么是网络编程? 从代码上来讲,就是调用相应的网络接口去编程就到达了网络编程的目的,至于这些接口是怎么实现的,暂时不用管
2,tcp/ip的特征是:可靠的,需要连接的,基于字节流的传输层协议。而udp/ip的特征是:不可靠的,不需要连接的,基于数据报的传输层协议。
3,C/S模型:就是类似qq,服务器只有一个,而客户端是多个的。B/S模型:类似浏览器,一个浏览器可以对多个服务器,每个服务器也可以连接多个不同的浏览器。
4,为什么需要启动网络库? 从结果上来看,如果不打开网络库的话,后续的操作没法进行。
#include <WinSock2.h> //这里包含这个头文件是把对应的函数声明弄进来
#pragma comment(lib,"Ws2_32.lib") //这里的意思是说把对应函数的实现找到,当然找到的都是
//人看不懂的二进制机器码。
int main()
{
WORD Version = MAKEWORD(2, 1); //创建版本号,相当于2.1
WSADATA Data; //定义一个结构体变量,充当出参
int ret=WSAStartup(Version, &Data);//返回值为一个int类型的变量
if (ret == 10091)
printf("用户环境问题,可以重启电脑试下!");
else if (ret == 10092)
printf("所使用的网络库不支持,更新一下!");
else if (ret == 10067)
printf("任务数量达到上线,受限于内存已不足或端口已用完!");
else if (ret == 10036)
printf("初始化发生了阻塞,就是卡住了!可以重启软件");
else if (ret == 10014)
printf("第二个参数不是有效参数,指针指向的不是有效地址,指到空了");
}
?
?
5,WSAStartup():w就是windous? ?S就是socket,A就是异步启动的意思。
6,异步和同步的理解:异步就是两件事情得一件一件来干,干一件得时候,另外一件必须是停下来得,也就是阻塞,同步就是两件事情一起干,比如一边听歌一边打游戏。
7,关于网络库版本,可以随便写,我的意思是写一些不存在得版本,如果主版本号存在,就去对应主版本得最高副版本,如果主版本不存在,就取电脑得支持的最新版本,例如输入得是1.7,但是1.7不存在,他会取1.x,如果输入得是3.5,那他会取2.2,我电脑支持得最新版本。但如果输入得是零点几,他会出现问题,返回值是10092。
8,主版本号在低位,符版本号在高位:
?可以看出,低位是主版本号1,高位是副版本号11,虽然输入得是1.11,但是在出参处得到的是1.1版本,257==0000 0001 0000 0001==1.1,
|