- 1、本文档共74页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
要实现网络编程,有多种方法:
WinSock、所用命名管道和邮箱、使用RPC(Remote Procedure Call)等均可以实现在网络上的通信。
本讲将介绍利用WinSock编程的两种途径:
一种是通过WinSock API
另一种是通过MFC 提供的WinSock类,即
CAsyncSocket和CSocket;Windows Socket编程原理;Socket概述;什么是socket?;Socket在协议栈中的位置;Socket到Socket的通信;Windows Socket(1);Windows Socket(2);端口;TCP/IP约定:0—1023为保留端口号,标准应用服务使用;1024以上是自由端口号,用户应用服务使用 ;IP地址、端口和Socket;TCP/IP应用服务工作原理;Socket工作原理;Socket的系统调用库函数;API的使用方法图示;分身有术;#include winsock.h
struct sockaddr_in{ short sin_family;//AF_INET unsigned short sin_port;
//16位端口号,网络字节顺序 struct in_addr sin_addr;
//32位IP地址,网络字节顺序 char sin_zero[8];//保留};;字节顺序;解决方法:网络字节顺序;字节顺序转换函数;Socket的两种基本类型;TCP;每个Winsock应用都必须加载Winsock DLL的相应版本;Web使用TCP, web server需要创建一个SOCK_STREAM套接字;把socket 绑定到一个特定端口;Socket I/O: listen();Socket I/O: accept();Socket I/O: accept();Socket I/O: recv();TCP;#include winsock.h
unsigned long PASCAL FAR inet_addr( const struct FAR* cp);
cp:一个以Internet标准“.”间隔的字符串。
返回值:若无错误发生,返回一个无符号长整型数。如果传入的字符串不是一个合法的Internet地址,那么返回INADDR_NONE。
struct sockaddr_in srv;
srv.sin_addr.s_addr = inet_addr(“128.192.35.50”);;把域名转换成地址;Socket I/O: connect();Socket I/O: send();Socket I/O: closesocket();TCP Client-Server交互流程;tcp_server.c;tcp_client.c;UDP;Socket I/O: socket();把socket 绑定到一个特定端口;Socket I/O: recvfrom();Socket I/O: recvfrom();UDP;Socket I/O: sendto();UDP Client-Server交互流程;udp_server.c;udp_client.c;Winsock2.0;CAsyncSocket编程;CAsyncSocket;CAsyncSocket程序流程;用AppWizard创建应用程序框架(1);CAsyncSocket
AppWizard 产生的Winsock 启动代码;派生CAsyncSocket类(2);CAsyncSocket: 生成的CAppSocket类 (AppSocket.h);添加处理Winsock事件的代码(3);class CAppSocket : public CAsyncSocket
{
...
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAppSocket)
public:
virtual void OnReceive(int nErrorCode);
//}}AFX_VIRTUAL
...
};;激活Winsock事件(4);CAsyncSocket的成员函数;CAsyncSocket 构造一个CAsyncSocket对象
Create 创建一个socket.
Attach 把一个socket handle关联到一个CAsyncSocket对象
Detach 取消socket handle与一个CAsyncSocket对象之间的关联
FromHandle 给定一个socket handle,
返回一个指向CAsyncSocket对象的指针
GetLastError 得到
文档评论(0)