第7章 Winsock 服務提供者介面 SPI

2021-06-07 12:54:08 字數 1460 閱讀 5244

本章的兩個例子原始碼 :

(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 // spi函式定義在ws2spi.h檔案中

#include #include #pragma comment(lib, "ws2_32") // 鏈結到ws2_32.lib

lpwsaprotocol_infow getprovider(lpint lpntotalprotocols)

// 申請緩衝區,再次呼叫wscenumprotocols函式

pprotoinfo = (lpwsaprotocol_infow)::globalalloc(gptr, dwsize);

*lpntotalprotocols = ::wscenumprotocols(null, pprotoinfo, &dwsize, &nerror);

return pprotoinfo;

}void freeprovider(lpwsaprotocol_infow pprotoinfo)

void main()

lpwsaprotocol_infow pprotoinfo;

int nprotocols;

pprotoinfo = getprovider(&nprotocols);

for(int i=0; i%d) : \n", i);

printf(" protocol: %ws \n", pprotoinfo[i].szprotocol);

printf(" catalogentryid: %d chainlen: %d \n",

pprotoinfo[i].dwcatalogentryid, pprotoinfo[i].protocolchain.chainlen);

int nerror;

wchar szbaseproviderdll[max_path] = ;

int nlen = max_path;

if (socket_error == ::wscgetproviderpath(&pprotoinfo[i].providerid, &szbaseproviderdll[0], &nlen, &nerror))

else

else

} }}

服務提供者 order

本節課我們來實現服務提供者 orde,order 為系統提供訂單相關服務,包括新增訂單 查詢訂單 刪除訂單 處理訂單,具體實現如下所示。1.在父工程下建立乙個 module,命名為 order,pom.xml 新增相關依賴,order 需要訪問資料庫,所以整合 mybatis 相關依賴,配置檔案從 ...

建立服務提供者

當 client 向 server 註冊時,它會提供一些元資料,例如主機和埠,url,主頁等。eureka server 從每個 client 例項接收心跳訊息。如果心跳超時,則通常將該例項從註冊 server 中刪除。通過註解 enableeurekaclient表明自己是乙個 eureka cl...

LSP(分層服務提供者)

lsp本身是dll,可以將它安裝到winsock目錄,以便建立套接字的應用程式不必知道此lsp的任何資訊就能呼叫它。執行原理 套接字建立函式會在winsock目錄中尋找合適的協議 呼叫此協議,的提供者匯出的函式 完成各種功能。編寫目的 讓使用者呼叫自定義的服務提供者,有自定義的服務提供者呼叫下層提供...