WinSock编程基础 01.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:61 大小:1.2MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

WinSock编程基础 01.ppt

WinSock编程基础01.ppt

预览

免费试读已结束,剩余 51 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第六章网络程序设计基本知识6.1网络应用程序的概念6.1网络应用程序的概念6.1网络应用程序的概念6.1网络应用程序的概念第六章网络程序设计基本知识6.2TCP/IP应用程序工作模型与网络编程接口6.2TCP/IP应用程序工作模型与网络编程接口6.2TCP/IP应用程序工作模型与网络编程接口6.2.2.WindowsSockets概念现在开发网络应用程序都使用Winsock2要使用,需要在代码中添加的:1)头文件winsock2.h(代码第1行)2)到WS2_32.lib库的链接(代码第2行)#include<winsock2.h>//#pragmacomment(lib,"WS2_32")6.2.2.WindowsSockets概念在Winsock规范中,将WinsockAPI函数集分为:6.2.3.Winsock规范的目标及相关概念Winsock规范的2个目标:1)给网络应用程序开发者提供一套简单的网络编程API。2)让各家网络软件供应商能根据这套规范建立各自符合Winsock标准的实现和应用程序。Winsock兼容的:遵守Winsock规范的网络软件Winsock提供者:Winsock兼容实现的提供者能够与Winsock兼容实现协同工作的应用程序,都被认为是具有Winsock接口的。称为Winsock应用程序第六章网络程序设计基本知识6.3.1.套接口(Socket)WinsockAPI依靠套接口进行网络程序设计套接口的本质:通信过程中所使用的一些缓冲区及相关的数据结构。6.3.2.套接口的分类流式套接口:使用TCP协议来实现数据报式套接口:使用UDP协议来实现原始套接口:允许对较低层协议(eg:IP、ICMP)进行直接访问6.3.4.对错误的处理机制P196对Winsock函数而言,返回错误很常见,如果发生错误,应该使用WSAGetLastError()函数以获得错误的详细说明intWSAGetLastError()返回:错误代码eg:printf("socketError=%d\n",WSAGetLastError());错误代码的值的声明在头文件Winsock2.h中6.3.5.网络字节顺序P148不同主机对字节值的存储顺序不同“主机字节顺序”存储由多个字节组成的字时,有的计算机在起始地址处存放整数的:低序号字节(小序在前)高序号字节(大序在前)Windows采用小序在前的存储方式IP地址端口号,按计算机各自的主机字节顺序表示网络中,为保证数据的正确性,网络通信协议中必须指定“网络字节顺序”(大序在前)6.3.5.网络字节顺序P1482个函数实现2B的“主机字节顺序”和“网络字节顺序”间的转换htons()ntohs()2个函数实现4B的“主机字节顺序”和“网络字节顺序”间的转换htonl()ntohl()第六章网络程序设计基本知识服务器端流程//-①加载动态链接库--------------------------------------//-②创建流式套节字S,使用socket()-----------------//-③创建结构体,用于记录自己的地址---------------//----绑定自己的地址,使用bind()--------------------//-④监听,使用listen()----------------------------------//-⑤创建结构体,用于记录客户端的地址------------//----创建套节字cli,用于记录accept的结果-----------//----循环接受客户的连接请求,使用accept()--//-⑥关闭套节字S,终止对动态链接库的访问----#include<winsock2.h>#pragmacomment(lib,“WS2_32”)#include<iostream.h>voidmain(){printf("加载等待中...");//------------------①加载动态链接库-------------------------------WORDwVersionRequested=MAKEWORD(2,2);WSADATAwsaData;if(WSAStartup(wVersionRequested,&wsaData)!=0){printf("WSAStartupFailed\n");printf("WSAStartupError=%d\n",WSAGetLastError());}函数WSAStartup定义:intWSAStartup(WORDwVersionReq