网络编程(整理完毕).doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:7 大小:94KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

网络编程(整理完毕).doc

网络编程(整理完毕).doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

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

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

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

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

孙新视频中关于网络编程的总结:SOCKET可以在同一区域的网套接字交换数据,也有可能跨区域通信,但是这只是在执行了某种转换进程后才能实现。Socket编程的前提条件:连接动态链接库ws2_32.lib头文件要求winsock2.h服务器的构建(TCP/IP)WSAStartup(赋值MSDN上的模板代码)调用SOCKET,得到一个套接字初始化一个结构体sockaddr/sockaddr_in,保存服务器端的网络信息调用BIND,绑定一个端口,必须要是1024以上的端口号调用listen,把服务器设置为监听模式进入一个循环,等待客户端的请求调用accpet,接受客户端的请求调用send,发送一个消息给客户端调用recv,接受客户端发送过来的信息2.2高版本的是WSARecv()/WSASend()。详细使用见MSDN客户端的构建(TCP/IP)WSAStartup(赋值MSDN上的模板代码)调用SOCKET,得到一个套接字初始化一个SOCKADDR/SOCKADDR_IN的结构体,在结构体中设置要连接的服务器的网络信息调用connect连接服务器使用send/recv(发送/接受)客户端的信息//注意,基于UDP的编程,使用sendto和recvfrom基于UDP的编程连接动态链接库ws2_32.lib头文件要求winsock2.h服务器的构建(TCP/IP)WSAStartup(赋值MSDN上的模板代码)调用SOCKET,得到一个套接字初始化一个结构体sockaddr/sockaddr_in,保存服务器端的网络信息调用BIND,绑定一个端口,必须要是1024以上的端口号。这是因为必须要告诉系统,要在哪个端口接受数据。调用recvfrom/sendto接受/发送一个消息到客户端2.2高版本的是WSARecvfrom()/WSASendTo(),详细见MSDN客户端的构建(TCP/IP)WSAStartup(赋值MSDN上的模板代码)调用SOCKET,得到一个套接字初始化一个SOCKADDR/SOCKADDR_IN的结构体,在结构体中设置要连接的服务器的网络信息使用sendto/recvfrom(发送/接受)客户端的信息最后相同的步骤:调用closesocket()调用WSACleanup()异步套接字(要用到WINSOKET2,因此不能用MFC提供函数进行套接字的加载和版本协商):相关函数说明:注册要使用异步阻塞的消息WSAAsyncSelect(SOCKETs,HWNDhWnd,unsignedintwMsg,longlEvent)S:需要做异步阻塞的套接字hWnd:接受异步消息的窗口的句柄wMsg(自定义函数请看资料锦集):一个自定义消息。自定义消息需要带两个参数:WPARAMANDLPARAMlEvent:需要做异步处理的消息的一个异或集合。提供了消息机制的网络事件选择,当使用它登记的网络事件发生时,Windows应用程序相应的窗口函数将收到一个消息,消息中指示了发生的网络事件,以及与事件相关的一些信息。原因:ThewParamparameteridentifiesthesocketonwhichanetworkeventhasoccurred.ThelowwordoflParamspecifiesthenetworkeventthathasoccurred.翻译:wParam消息确定了一个已经发生的网络事件,而低字节的lParam这个参数指向了这个已经发生的网络事件。使用函数LOWORD(lParam)。WSAEnumProtocols(LPINTlpiProtocols,LPWSAPROTOCOL_INFOlpProtocolBuffer,ILPDWORDlpdwBufferLength)lpiProtocols:一个以NULL结尾的协议标识号数组。这个参数是可选的,如果lpiProtocols为NULL,则返回所有可用协议的信息,否则,只返回数组中列出的协议信息。lpProtocolBuffer,[out]:一个用WSAPROTOCOL_INFO结构体填充的缓冲区。WSAPROTOCOL_INFO结构体用来存放或得到一个指定协议的完整信息。lpdwBufferLength,[in,out]:在输入时,指定传递给WSAEnumProtocols()函数的lpProtocolBuffer缓冲区的长度;在输出时,存有获取所有请求信息需传递给WSAEnumProtocols()函数的最小缓冲区长度。这个函数不能重复调用,传入的缓冲区必须足