《C语言也能干大事》第十一节.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《C语言也能干大事》第十一节

《C语言也能干大事》第十一节:Socket网络编程板书: 这节课是自己动手写QQ、自己动手写飞鸽传书的基础,以后想从事网络开发、信息系统开发、游戏开发、嵌入式系统开发等的同学必须学习。 演示一个简单的和网易Email服务器对话的过程。 1、网络基本概念 讲解QQ的基本原理 讲解浏览器上网的基本原理 服务器:Server。提供服务的计算机。 客户端:Client。和服务器端交互的一个设备。 IP地址:计算机在网络中的地址。相当于每个家庭的电话。 别名、域名:www.RuP。域名就相当于你家的地址。问114,你家的电话(告诉地址) DNS:网络中的114。Domain Name System。 端口:Port。不同的程序连接服务器时候用的插座。(程序和服务器通信的时候的一个开得的一个口子) Socket(套接字):导线、网络连接。 2、 WinSock、WinSocket。 Socket:平台无关的。Socket标准。所有操作系统都实现了这个标准。Send、recv。。。标准的。一通百通!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! WinSock:添加了一些Windows独有的函数。而且不用这些函数的话Socket程序还跑不起来。羞臊微软!!! WinSock编程:平台无关,一通百通。WSA(Windows Socket API) S S 3、 LastError 调用WindowsAPI的时候,每步执行完毕都会把执行结果放到LastError中去,所以应该在函数执行完毕立即去取。 DeleteFile(f1) DeleteFile(f2) GetLastError() LastError只能容纳一个错误码 DeleteFile(f1) GetLastError() DeleteFile(f2) GetLastError() 错误码。2233、344555 FormatMessage:把错误码转换为错误消息。 Windows错误处理 GetLastError void ShowError() { TCHAR* lpMsgBuf; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| //自动分配消息缓冲区 FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息 NULL,GetLastError(), //获取错误信息标识 MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),//使用系统缺省语言 (LPTSTR)lpMsgBuf, //消息缓冲区 0, NULL); MessageBox(NULL,lpMsgBuf,,MB_ICONERROR); } 复制代码 在.h中声明函数,在.c中实现!!! 都会有哪些错误? 4、模板代码: (1)、添加winsock2.h (2)、连接库“wsock32”。怎么知道添加它呢?#pragma comment(lib,ws2_32.lib)。 注意:在mainDlg.h里面添加void SocketTest(); void ShowError(); (3)、模板代码 WSADATA wsaData; //初始化Socket库 WSAStartup(MAKEWORD(2,0),wsaData); //创建一根电线 SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); SOCKADDR_IN sa; sa.sin_family=AF_INET; //设置电线连接服务器端的端口 sa.sin_port = htons(IPPORT_SMTP); //35是ping 出来的,后面会讲使用gethostbyname来直接从 //主机名得到ip地址 sa.sin_addr.S_un.S_addr = inet_addr(35); //为什么不用设置客户端的端口,难道不需要客户端的端口吗? if(connect(sock,(SOCKADDR *)sa,sizeof(sa))==SOCKET_ERROR) { ShowError(); return; } //做事情。把大象放冰箱总共分几步 closesocket(sock); WSACleanup(); 复制代码 QQ服务器的端口8888。需要指定客户端的端口是9999. 端口有一个特点:排他性!端口已经被别的程序占用,不能再用这个端口。 开两个QQ。11111111111 22222222222 9999。如果端口可以被多个程序使用的话,QQ聊天服务器发过来的消息被多个QQ收到。很荒谬! 排他性! 如果在程序里写死了客户端用的端口。。。所以才需要Socket替客户端动态分配一

文档评论(0)

kabudou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档