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