如何判定宽带网络的PPPoE拨号是否建立了连接?

china97 2002-06-02 11:53:02
我想编写一个宽带计时的软件,可是不知道PPPoE拨号连通和断开后会产生什么事件或者消息?另外:如果要利用自己的软件来PPPoE拨号,有没有什么好的控件或者方法推荐?
...全文
95 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
china97 2002-06-16
  • 打赏
  • 举报
回复
modem计时软件也可以用我上面的函数呀。还可以检测串口是否被打开,也可以利用现成的控件,办法多了去了。就是宽带计时不好写,因为宽带也是利用网卡的,容易和局域网连接混淆。
利用IP地址检测可能可以。不过XP下IP地址检测我不会呀。
另外,98下可以利用读取注册表的某个键值确定是否上网。XP下我找不到这个键值。
mriss 2002-06-16
  • 打赏
  • 举报
回复
那些modem计时软件是靠什么鉴别的?
载波信号?
FY_njim 2002-06-15
  • 打赏
  • 举报
回复
关注
vtable9999 2002-06-15
  • 打赏
  • 举报
回复
比较笨拙的办法可以这样,读取ipconfig/all的信息,分析有没有以太网地址。

china97 2002-06-15
  • 打赏
  • 举报
回复
我用如下代码大部分情况下可以做到监控了,不过在XP下,有时候会受到局域网连接的干扰,从而造成总是认为现在是“连线”。我用的是IP城域网,PPPoE虚拟拨号。所以局域网总是通的。
有什么更好的办法吗?
又及:用Ping的办法也可以,不过不好,一来浪费带宽,二来反应太慢,如果Ping不到就要几秒中才能返回结果。

function GetOnlineStatus : Boolean;
var
ConTypes : Integer;
begin
ConTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;
if (InternetGetConnectedState(@ConTypes, 0) = False)
then Result := False
else Result := True;
end;
china97 2002-06-13
  • 打赏
  • 举报
回复
那我岂不是要编写一个类似sniffer的东西不停地监控所有数据包?
倒...
scarab 2002-06-11
  • 打赏
  • 举报
回复
连接或者断开之后会有一定格式的数据包发送到计时服务器
只要你解析这个数据包,然后把用户和时间记录下来就可以了
数据报的基本格式:

Code ID Length Vector Value-Pairs ……………

数据包的基本格式如上图所示:
Code 字段:(8位)代表请求或应答的类型,
这里只能为4~~Accounting-Request ;
ID 字段:(8位)代表消息序列号;
Length 字段:(16位)代表数据报的长度(字节长度);
Vector 字段:(16字节)在请求数据报中是随机数,在应答数据包中作为MD5加密算法的参数;

Value-Pairs 字段:格式如下。

Attribute Length Value

其中,Attribute :(8位)值对属性代码;
Length :(8位)值对的长度;
Value :值对属性的具体值。
具体的要看相关知识
spidertan 2002-06-10
  • 打赏
  • 举报
回复
Up!不过,我还是看了一下RAS结构,你不妨去看看,看能不能找到你所需要的
china97 2002-06-10
  • 打赏
  • 举报
回复
没人回答?唉,真失败,浪费了100分
china97 2002-06-04
  • 打赏
  • 举报
回复
还是没人知道吗?拜托哪位替我顶一下。
china97 2002-06-03
  • 打赏
  • 举报
回复
没人知道吗?没人关注吗?

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧