第7章 Winsock 服务提供者接口 (SPI)
来源:互联网 发布:centos ftp服务器配置 编辑:程序博客网 时间:2024/05/21 00:52
本章的两个例子源码 :
(1)、LSP (2)、InstDemo
例子本身没问题,但是在安装了 LSP.dll 之后,貌似网络断了。搞了半天,居然是 DLL 路径的问题,出现全部网络连接都不通的原因是找不到安装的 DLL。
最安全的安装方式是 :
1)、比如,LSP.dll 和 InstDemo.exe 位于 C:\LSP ,则将 CMD 也设置到 路径 C:\LSP 。
2)、InstDemo --> InstallProvider 传入 DLL的完整路径 。
如果,还是有不能访问网络的现象发生,就查看下DLL所在的路径,看看是不是装对了...
///////////////////////////////////////////////////////////// WSCEnumProtocols.cpp文件#include <Ws2spi.h>// SPI函数定义在Ws2spi.h文件中#include <windows.h>#include <stdio.h>#pragma comment(lib, "WS2_32")// 链接到WS2_32.libLPWSAPROTOCOL_INFOW GetProvider(LPINT lpnTotalProtocols){int nError;DWORD dwSize = 0;LPWSAPROTOCOL_INFOW pProtoInfo = NULL;// 取得需要的缓冲区长度if(::WSCEnumProtocols(NULL, pProtoInfo, &dwSize, &nError) == SOCKET_ERROR){if(nError != WSAENOBUFS)return NULL;}// 申请缓冲区,再次调用WSCEnumProtocols函数pProtoInfo = (LPWSAPROTOCOL_INFOW)::GlobalAlloc(GPTR, dwSize);*lpnTotalProtocols = ::WSCEnumProtocols(NULL, pProtoInfo, &dwSize, &nError);return pProtoInfo;}void FreeProvider(LPWSAPROTOCOL_INFOW pProtoInfo){::GlobalFree(pProtoInfo);}void main(){WSADATA wsaData;WORD sockVersion = MAKEWORD(2, 2);if(::WSAStartup(sockVersion, &wsaData) != 0){printf("WSAStartup failed : %d\n", ::GetLastError());return;}LPWSAPROTOCOL_INFOW pProtoInfo;int nProtocols;pProtoInfo = GetProvider(&nProtocols);for(int i=0; i<nProtocols; i++){printf("==> %d) : \n", i);printf(" Protocol: %ws \n", pProtoInfo[i].szProtocol);printf(" CatalogEntryId: %dChainLen: %d \n", pProtoInfo[i].dwCatalogEntryId, pProtoInfo[i].ProtocolChain.ChainLen);int nError;WCHAR szBaseProviderDll[MAX_PATH] = {0};int nLen = MAX_PATH;if (SOCKET_ERROR == ::WSCGetProviderPath(&pProtoInfo[i].ProviderId, &szBaseProviderDll[0], &nLen, &nError)){printf(" WSCGetProviderPath(%d) failed %d \n", i, nError);}else{if (! ::ExpandEnvironmentStringsW(szBaseProviderDll, szBaseProviderDll, MAX_PATH)){printf(" ExpandEnvironmentStringsW(%d) failed %d \n", i, ::GetLastError());}else{printf(" %ws\n\n", szBaseProviderDll);}}}}
- 第7章 Winsock 服务提供者接口 (SPI)
- SPI(service provider interface 服务提供者接口)
- 网络编程之Winsock2 服务提供者接口(SPI)
- 网络编程之Winsock2 服务提供者接口(SPI)
- SPI 服务提供接口机制
- 第1章 Winsock简介
- WinSock接口
- Spring Cloud学习 | 第二章 | 服务提供者
- About the Winsock SPI(关于Winsock SPI)
- 《第一行代码》学习之旅--第7章-内容提供者ContentProvider
- SPI接口
- SPI 接口
- SPI接口
- SPI接口
- spi接口
- SPI接口
- SPI接口
- SPI接口
- IOS设置UIView的边框为圆角
- performSelectorOnMainThread
- C++ Primer 学习笔记(二)——标准库类型
- 构建OpenStack的高可用性(HA,High Availability) .
- Android 编译后目录解析
- 第7章 Winsock 服务提供者接口 (SPI)
- serial_put_hex
- C++之输出
- 什么是特性阻抗(Characteristic impedance)
- 重构 改善既有的代码 读书笔记3
- GNU Assembler 伪指令
- 为什么 你会如此痛苦……?
- Static 作用详述
- 谈生命