控制台编程(阻塞 非阻塞)剖析课件.ppt

控制台编程(阻塞 非阻塞)剖析课件.ppt

ID:57047215

大小:47.50 KB

页数:24页

时间:2020-07-28

控制台编程(阻塞 非阻塞)剖析课件.ppt_第1页
控制台编程(阻塞 非阻塞)剖析课件.ppt_第2页
控制台编程(阻塞 非阻塞)剖析课件.ppt_第3页
控制台编程(阻塞 非阻塞)剖析课件.ppt_第4页
控制台编程(阻塞 非阻塞)剖析课件.ppt_第5页
资源描述:

《控制台编程(阻塞 非阻塞)剖析课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Win32ConsoleApplicationCommunicationProgramming阻塞式套接字网络编程非阻塞式套接字网络编程阻塞式套接字网络编程#include#include#pragmacomment(lib,"ws2_32.lib")阻塞式套接字客户机完整代码服务端程序p2-5.cpp//初始化Winsock服务WSADATAWsaDat;if(WSAStartup(MAKEWORD(2,2),&WsaDat)!=0){std::cout<<"Winsock错误-Wins

2、ock服务初始化失败!r";WSACleanup();system("PAUSE");return0;}typedefstructWSAData{WORDwVersion;WORDwHighVersion;charszDescription[WSADESCRIPTION_LEN+1];charszSystemStatus[WSASYSSTATUS_LEN+1];unsignedshortiMaxSockets;unsignedshortiMaxUdpDg;charFAR*lpVendorInfo;}WSADATA;wVersi

3、on:将使用的Winsock版本号,wHighVersion:载入的Winsock动态库支持的最高版本,注:高字节代表次版本,低字节代表主版本。szDescription与szSystemStatus:由特定版本的Winsock设置,实际上没有太大用处。iMaxSockets:表示最大数量的并发Sockets,其值依赖于可使用的硬件资源。iMaxUdpDg:表示数据报的最大长度;lpVendorInfo:是为Winsock实现而保留的制造商信息,这个在Windows平台上并没有什么用处.//创建套接字SOCKETSocket=soc

4、ket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(Socket==INVALID_SOCKET){std::cout<<"套接字错误-创建套接字失败!r";WSACleanup();system("PAUSE");return0;}//主机名解析structhostent*host;if((host=gethostbyname("localhost"))==NULL){std::cout<<"主机名解析失败!r";WSACleanup();system("PAUSE");return0;}S

5、tructhostent{char*h_name;char*h_aliases;shorth_addrtype;shorth_length;char**h_addr_list;};h_name–地址的正式名称。h_aliases–空字节-地址的预备名称的指针。h_addrtype–地址类型;通常是AF_INET。h_length–地址的比特长度。h_addr_list–零字节-主机网络地址指针。网络字节顺序。h_addr-h_addr_list中的第一地址。//初始化套接字地址结构信息SOCKADDR_INserverInf;ser

6、verInf.sin_family=AF_INET;serverInf.sin_addr.s_addr=INADDR_ANY;serverInf.sin_port=htons(8888);sockaddr_in(在netinet/in.h中定义): structsockaddr_in{ shortintsin_family;/*Addressfamily*/ unsignedshortintsin_port;/*Portnumber*/structin_addrsin_addr;/*Internetaddress*/ unsigne

7、dcharsin_zero[8];/*Samesizeasstructsockaddr*/ };structin_addr{ unsignedlongs_addr; };typedefstructin_addr{ union{ struct{ unsignedchars_b1, s_b2, s_b3, s_b4; }S_un_b; struct{ unsignedshorts_w1, s_w2; }S_un_w; unsignedlongS_addr; }S_un; }IN_ADDR;sin_family:指代协议族,在socket

8、编程中只能是AF_INET sin_port:存储端口号(使用网络字节顺序) sin_addr:存储IP地址,使用in_addr这个数据结构 sin_zero:是为了让sockaddr与sockaddr_in两个数据结构保持大小相同而

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。