qsocket 指定網絡卡 QSocket

2021-10-13 08:41:38 字數 1512 閱讀 2842

/*判斷是否能夠路由到指定的ip

parameters

aremote : 用來確定網絡卡的遠端位址

returns

在以下情況下,返回false:

1.無法路由到遠端位址;

2.網絡卡被禁用或網絡卡斷開連線

否則,返回true

bool __fastcall canrouteto(const in_addr &aremote)

mib_iftable *atable;

dword asize=0;

int aretval=0;//unknown

if(getiftable(null,&asize,false)==error_insufficient_buffer)

atable=(mib_iftable *)malloc(asize);

pmib_ipforwardtable pipforwardtable=null;

tryif(getiftable(atable,&asize,false)==error_success)

asize=0;

int alastmatric;

if(getipforwardtable(pipforwardtable, &asize, false)==error_insufficient_buffer)

pipforwardtable = (pmib_ipforwardtable)malloc(asize);

if(getipforwardtable(pipforwardtable, &asize, false)==error_success)

for(int j=0; (jdwnumentries)&&(aretval==0); j++)

if((pipforwardtable->table[j].dwforwardmask&aremote.s_un.s_addr)==pipforwardtable->table[j].dwforwarddest)

if(pipforwardtable->table[j].dwforwardtype>=3)

for(dword i=0; idwnumentries; i++)

if(pipforwardtable->table[j].dwforwardifindex==atable->table[i].dwindex)

switch(atable->table[i].dwoperstatus)

case mib_if_oper_status_operational:

case mib_if_oper_status_connected:

aretval=1;//connected

break;

default:

aretval=2;//disconnected

break;

break;

__finally

free(atable);

if(pipforwardtable)

free(pipforwardtable);

return (aretval==1);

qsocket 指定網絡卡 QAsioSocket

qasiotcpsocket 把asio的socket操作封裝成類似qt network類似的簡單的api。優點,目的 api 使用簡單優雅。封裝完全隱藏asio實現的細節。不依賴boost。可以直接包含 使用,也可以編譯成動態庫。比較qt的socket 效率高 充分利用平台特性,win iocp ...

多網絡卡指定網絡卡傳送資料

環境 2個網絡卡,分別在不同網路環境。區域網一 閘道器 10.9.16.254 區域網二 閘道器 10.9.24.1 電腦位址2 10.9.24.88 如下 include stdafx.h include include pragma comment lib,ws2 32.lib includev...

多網絡卡指定網絡卡傳送資料

環境 2個網絡卡,分別在不同網路環境。區域網一 閘道器 10.9.16.254 區域網二 閘道器 10.9.24.1 電腦位址2 10.9.24.88 如下 include stdafx.h include include pragma comment lib,ws2 32.lib include ...