如何取拨号的IP?急!!!

kally 2000-06-26 08:19:00
一台服务器为局域网的代理,同时进行拨号,请问如何取得拨号的IP?
最好是用winsock可以解决,如不行,其他也可以,各位大虾快帮忙!
...全文
266 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-06-27
  • 打赏
  • 举报
回复
Public Const RASP_PppIp = &H8021&

Const RAS_MaxIpAddress = 15

Public Type RASPPPIP
'set dwsize to 40
dwSize As Long
dwError As Long
szIpAddress(RAS_MaxIpAddress) As Byte
szServerAddress(RAS_MaxIpAddress) As Byte
End Type

Public Declare Function RasGetProjectionInfo Lib "RasApi32.DLL" Alias "RasGetProjectionInfoA" (ByVal hRasConn As Long, ByVal rasprojection As Long, lpprojection As Any, lpcb As Long) As Long


Private Function TrimNull(StrNull As String) As String
Dim l As Long
l = InStr(StrNull, vbNullChar)
If l > 0 Then
TrimNull = Left$(StrNull, l - 1)
Else
TrimNull = StrNull
End If
End Function


...
Dim lpraspppip As RASPPPIP
lpraspppip.dwSize = 40
If RasGetProjectionInfo(mhConn, RASP_PppIp, lpraspppip, 40) = 0 Then
mRemoteIPAddress = TrimNull(StrConv(lpraspppip.szServerAddress, vbUnicode))
End If


另外你可以到本站“软件发布”的“开发控件”去下载“多线程RAS控件"使用”
Un1 2000-06-26
  • 打赏
  • 举报
回复
Dim lpraspppip As RASPPPIP
lpraspppip.dwSize = 40
If RasGetProjectionInfo(mhConn, RASP_PppIp, lpraspppip, 40) = 0 Then
mRemoteIPAddress = TrimNull(StrConv(lpraspppip.szServerAddress, vbUnicode))
End If
meijg 2000-06-26
  • 打赏
  • 举报
回复
上面是delphi的程序,你可以将他们转换成vb用,主要是要使用winsock
gethostname,gethostbyname,inet_ntoa都是标准的windows API,可以在msdn里看帮助
meijg 2000-06-26
  • 打赏
  • 举报
回复
试试下面这个函数,返回的就是你的当前ip,如果你同时还有网卡的话,那么你就要在获取result的时候判断一下,他获取的是当前的所有ip,只要稍加比较就可以找到你要的拨号ip, if result=yourip(lan) then ...
function TForm1.LocalIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;

begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
kally 2000-06-26
  • 打赏
  • 举报
回复
是在程序中取得。请问如何做?
TopHead 2000-06-26
  • 打赏
  • 举报
回复
是在程序中取得,还是在哪儿?
可以通过 Ipconfig 命令取得该地址。
kally 2000-06-26
  • 打赏
  • 举报
回复
那就太感谢你了,meijg,什么时候可以给我呢,我现在很急,多谢多谢!!!!
meijg 2000-06-26
  • 打赏
  • 举报
回复
我会给你做一个动态库,就可以不用转换了
kally 2000-06-26
  • 打赏
  • 举报
回复
请问meijg,能不能说得详细一些,应该如何将代码转成VB的呢,我是个新手,对这些还不太熟悉,那几个API函数我也没有找到。
To Un1:你的代码我看不太明白,是不是还需要再声明一些东西呢?

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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