问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vb 通过winsock 怎么判断用户在线

发布网友 发布时间:2023-07-13 16:27

我来回答

2个回答

热心网友 时间:2023-09-12 17:19

五种查询Internet连接状态[含IP]的方法
1.Powersock控件法:
这种方法最简单,利用FastNet页的Powersock控件的LocalIP属性即可判断:
if(Powersock1->LocalIP=="127.0.0.1"):在线
else:离线
特点:[1]判断连接状态,[2]获得本地IP。
2.使用URL.DLL的InetIsOffline(0)函数:
Win2K:URL.DLL存放在\SYSTEM32\;
Win9x:URL.DLL存放在\SYSTEM\;
用GetSystemDirectory(...)得到系统目录。
InetIsOffline(0)返回值:
TRUE:离线;FALSE:在线。
特点:判断连接状态。
3.WinSock编程法:见程序
特点:[1]判断连接状态;[2]获得本地IP和主机名。
4.WinInet.DLL的InternetGetConnectedState(&dwFlag,0)函数:
注意:为使用该函数,须在项目文件中加入:USELIB("WinInet.LIB")
特点:获得较详的连接描述!
5.RASAPI32.DLL的RasEnumConnections函数:
要使用该"枚举所有活动连接"函数,必须:
#include"ras.h"。
若连接数>0:本机当前已连入Internet;
否则:本机当前未连入Internet;
源码如下,在[BCB5+WIN2K+拨号上网]下通过(N字头的为菜单项):
-------------Powersock控件法-----------------------------------------
void__fastcallTForm1::N11Click(TObject*Sender)
{
if(Powersock1->LocalIP=="127.0.0.1")
ShowMessage("未连接:"+Powersock1->LocalIP);
elseShowMessage("已连接:"+Powersock1->LocalIP);
}
-------------URL.DLL的InetIsOffline函数法----------------------------
HINSTANCEhDLL;
typedefbool__stdcall(*FUN)(int);定义DLL函数指针FUN
FUNisOffLine;
void__fastcallTForm1::N21Click(TObject*Sender)
{
charBuffer[MAX_PATH];
GetSystemDirectory(Buffer,MAX_PATH);
hDLL=LoadLibrary((AnsiString(Buffer)+"\\URL.DLL").c_str());
if(hDLL==NULL){ShowMessage("CannotloadURL.DLL!Return...");return;}
isOffLine=(FUN)GetProcAddress(hDLL,"InetIsOffline");
if(isOffLine==NULL){ShowMessage("CannotloadInetIsOffline(int),Return...");return;}
if(!isOffLine(0))ShowMessage("已连接");
elseShowMessage("未连接");
FreeLibrary(hDLL);
}
------------WinSock法------------------------------------------------
void__fastcallTForm1::N31Click(TObject*Sender)
{
WORDwVersionRequested;
WSADATAwsaData;
wVersionRequested=MAKEWORD(1,1);StartupWinSock
WSAStartup(wVersionRequested,&wsaData);
-----------------------------------------
hostent*p;char*p2;chars[128];
gethostname(s,128);Getthecomputername
p=gethostbyname(s);
p2=inet_ntoa(*((in_addr*)p->h_addr));GettheIpAddress
-----------------------------------------
AnsiStringLocationIP=p2;
if(LocationIP=="127.0.0.1")
ShowMessage("未连接:"+LocationIP);
elseShowMessage("已连接:"+LocationIP);
WSACleanup();
}
-----------WinInet.DLL的InternetGetConnectedState函数法----------------
void__fastcallTForm1::N41Click(TObject*Sender)
{
StaticText1->Caption="";StaticText2->Caption="";StaticText3->Caption="";
StaticText4->Caption="";StaticText5->Caption="";StaticText6->Caption="";
StaticText7->Caption="";
DWORDdwFlag;
InternetGetConnectedState(&dwFlag,0);
if(dwFlag&INTERNET_CONNECTION_MODEM)StaticText1->Caption="Yes";MODEM连接
elseStaticText1->Caption="No";
if(dwFlag&INTERNET_CONNECTION_LAN)StaticText2->Caption="Yes";LAN连接
elseStaticText2->Caption="No";
if(dwFlag&INTERNET_CONNECTION_PROXY)StaticText3->Caption="Yes";代理连接
elseStaticText3->Caption="No";
---------检查是否连接-------------------------------------------
if(InternetGetConnectedState(NULL,0))StaticText4->Caption="Yes";在线
elseStaticText4->Caption="No";
if(dwFlag&INTERNET_CONNECTION_OFFLINE)StaticText5->Caption="Yes";//离线。注:不好用!
elseStaticText5->Caption="No";
----------------------------------------------------------------
if(dwFlag&INTERNET_RAS_INSTALLED)StaticText6->Caption="Yes";
elseStaticText6->Caption="No";
if(dwFlag&INTERNET_CONNECTION_CONFIGURED)StaticText7->Caption="Yes";
elseStaticText7->Caption="No";
}
----------RASAPI32.DLL的RasEnumConnections函数法---------------------------
#include"ras.h"
void__fastcallTForm1::N51Click(TObject*Sender)
{
RASCONNRASconn[256];活动连接数组
DWORDBuffSize;数组所占内存大小;
DWORDConnNum;活动连接数目
RASconn[0].dwSize=sizeof(RASCONN);必须指定一个连接[数组元素]的内存大小;
BuffSize=sizeof(RASCONN)*256;
DWORDdwReturn=RasEnumConnections(RASconn,&BuffSize,&ConnNum);
if(dwReturn==0)
{
if(ConnNum>0)ShowMessage("已连接。当前激活连接数:"+AnsiString(ConnNum));
elseShowMessage("未连接。当前激活连接数:"+AnsiString(ConnNum));
}
elseShowMessage("RasEnumConnections函数失败!");

热心网友 时间:2023-09-12 17:19

学习了!向楼上的致敬,虽然是通过CTRL+C和CTRL+V的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
官户的介绍 ...因为在家怕用水羊皮该硬了。如何清洗,不要说用盐,谢谢。 祛痣后的注意事项 “应道不痴颠”的出处是哪里 “素娥作意失幽期”的出处是哪里 斗鱼怎么举报主播 汪东城在张惠妹《记得》MV里哪里出现了啊? 谁知道张惠妹《记得》MV里的男主角是谁 关于幼儿想像的说法,不正确的是( )。 苏州游船招聘信息,苏州自驾游艇旅游攻略 我看了“为何能上QQ却打不开网页?”就把winsock和winsock2删了,怎么办? 家长回复老师的话怎么写? 高度近视怎么办?高度近视怎么治疗? 老师的批评,家长如何回复比较好? 肺炎 有绿痰怎么办 我想去买200元的一卡充,充值支付宝,手续费的百分比是多少?需要多付多少钱? 支付宝最少可以充多少钱?要不要手续费 向支付宝冲值要手续费吗? 银行卡转账500到支付宝需要多少钱的手续费 五百元的充值卡充到支付宝里面 需要多少手续费? 石油加工与石油化工到底有多大区别 石油化工和石油工业什么导向工业?区别?? 万寿菊种植方法,万寿菊种植方法是什么 有没有适合在苹果电脑上使用的证券行情软件 夏天树木长出葱葱茏茏,密密层层的枝叶,把森林封得严严实实的封字用的真妙,让人感觉到什么? 请问这是什么树木的幼苗发的枝叶? 3dmax合并进来的模型怎么不在中间呢 3D MAX坐标不动 3d max 轴跟着鼠标移动,选中的两条线坐标轴不在中间,鼠标移动到某一条,坐标轴就跟着来了。 请问,苏宁易购在微信那个群发就能免费领电饭煲是真的活动吗? 江苏的习俗都是子女父母没有尊卑观念的嘛,别人跟我说江苏那边的人都是跟长辈没有尊卑观念的? 辽宁离婚率2022 公司拟设立集团公司,请问母公司是否就是集团公司,母公司与集团公司的关系是什么,是否是一回事 一个诡异的梦,好像我是这个梦的讲述者,梦的大概内容是梦见乌鸦在啄食尸体,然后在梦里我并不觉的恐怖, 梦见僵屍吃乌鸦 你觉得我怎么样用英文怎么说 你认为我怎么样?用英语点样说? 你觉得我怎样用英语怎么说? 用英语说你觉得我怎么样 英语:你认为我是个什么样的人怎么说 你感觉我什么什么怎么样。用英语怎么说 求高人 水果拼盘——香瓜娃娃作文 合肥徽谷园家宴馆乘车怎么走,地址:合肥茗香路 饮水机18升水瓶能用开水烫吗? 在一张正方形纸上剪去一个角剩下的是一个什么图形 将一个正方形切去一个角,剩下的图形是(  )A.三角形B.四边形C.三角形或五边形D.无法确 如图,一块正方形的纸片,被剪掉一个角剩下的是什么图形?它的内角和是多少度? 饮水机的空桶,今天在太阳下晒了下,又有点热了,不知道会不会去灌水对喝了身体不好 饮水机桶被热水烫憋了,会有毒吗 怎么更改灵活就业社保的基数