请问用什么语句可令自己的Modem断开连接?(50分)

  • 主题发起人 主题发起人 Lonelysword
  • 开始时间 开始时间
L

Lonelysword

Unregistered / Unconfirmed
GUEST, unregistred user!
请问用什么语句可令自己的Modem断开连接?
 
发送"+++"(停1ms, 有的modem有bug, 不需要停)"ATH0"
 
能否详细一点?
 
应该用ras api断开吧

(要是拨号上网的,你都不可能打开com口(被其他进程用了),也谈不上 +++ 了)
 
ath指令,
如果你能打开端口的话
 
pipi.没看清题目吧?
"+++"是modem默认的转意符, 是将modem从数据传输模式转入命令模式嘛
也就是说: 在modem传输的数据过程中如果数据中包含"+++"字符串的话,
则将+++之后到#13#10之前的数据当作modem控制命令执行.
因此此方法是在数据传输过程中实现的, 当然是在别人打开modem端口
并进行数据传输中控制modem的嘛.
如果自己能打开modem端口, 直接发送AT指令就行了, 还要"+++"干吗?
大部分modem在接受到"+++"之后有个延时, 如果在这个延时期间有数据
则不进行转意操作, 而将+++直接作为数据发送. 某些modem则忽略了这个
问题, 延时寄存器中的值默认为设置为0了, 一出现+++就进行转意操作.
这也是一个很有名的bug, 当初很多人用这个来相互攻击. Hayes当初还特地
为这个问题给一些modem厂商发过一份email, email正文第一行的就是
"+++ATH0", 以引起他们对这个问题的注意. :)
至于发送手段, 因为是在数据传输过程中进行的, 所以任何能引起数据传输
的方法都可以(比如IRC中当作普通文本发送, 甚至在browser的地址栏输入
"+++ATH0" :D, 当然是针对那些有bug的modem)
前年我就写过这么个工具, 通过ICMP PING 包发送"+++ATH0"字符串.
嘿嘿, ICMP中应答PING时是将对方PING包中的数据原封返回, 这时如果
他的MODEM有BUG, 那么......, 成功率大概在40%左右(好高哟)
 
如何在Delphi中实现?
 
1: 直接用AT指令可实现,各位大虾已讲的很清楚了。
2:用下面的语句也可:
MyComm.DTREnable:=false;
MyComm.DTREnable:=true;

 
先用RasEnumConnections找出连接,
然后用RasHangUp挂断。
 
Another_eYes is right
but how to do after +++
just send 'ath0' or send 'ath0' after a while?
 
接受答案了.
 
后退
顶部