找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 3512|回复: 0

【分享】delphi中有关网络相关的技巧集锦

[复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2009-3-7 18:30:02 | 显示全部楼层 |阅读模式
<p>1、如何判断当前网络连接方式<br/>判断结果是MODEM、局域网或是代理服务器方式。<br/>uses wininet;<br/>Function ConnectionKind :boolean;<br/>var flags: dword;<br/>begin<br/>Result := InternetGetConnectedState(@flags, 0);<br/>if Result then<br/>begin<br/>if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then<br/>begin<br/>showmessage('Modem');<br/>end;<br/>if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then<br/>begin<br/>showmessage('LAN');<br/>end;<br/>if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then<br/>begin<br/>showmessage('Proxy');<br/>end;<br/>if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then<br/>begin<br/>showmessage('Modem Busy');<br/>end;<br/>end;<br/>end;</p>
<p>2、判断系统是否连接INTERNET<br/>需要引入URL.DLL中的InetIsOffline函数。<br/>函数申明为:<br/>function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL';<br/>然后就可以调用函数判断系统是否连接到INTERNET<br/>if InetIsOffline(0) then ShowMessage('not connected!')<br/>else ShowMessage('connected!');<br/>该函数返回TRUE如果本地系统没有连接到INTERNET。<br/>附:<br/>大多数装有IE或OFFICE97的系统都有此DLL可供调用。<br/>InetIsOffline<br/>BOOL InetIsOffline(<br/>DWORD dwFlags,<br/>);</p>
<p>3、解析服务器IP地址<br/>uses winsock</p>
<p>function IPAddrToName(IPAddr : String): String;<br/>var<br/>SockAddrIn: TSockAddrIn;<br/>HostEnt: PHostEnt;<br/>WSAData: TWSAData;<br/>begin<br/>WSAStartup($101, WSAData);<br/>SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));<br/>HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);<br/>if HostEnt&lt;&gt;nil then result:=StrPas(Hostent^.h_name) else result:='';<br/>end;</p>
<p>4、取利主机的ip地址。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uses winsock;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure TForm1.Button1Click(Sender: TObject);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP:string;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IPstr:String;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buffer:array[1..32] of char;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i:integer;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSData:TWSAdata;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HostHostEnt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if WSAstartup(2,WSData)&lt;&gt;0 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showmessage('WS2_32.DLL3?ê??ˉê§°ü.');<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if GetHostname(@buffer[1],32)&lt;&gt;0 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showmessage('??óDμ?μ??÷?ú??.');<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showmessage('??óD3é1|·μ???÷?ú??');<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host:=GetHostbyname(@buffer[1]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if Host=nil then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; showmessage('IPμ??·?a??.');<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edit2.Text:=Host.h_name;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edit3.Text:=chr(host.h_addrtype+64);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to 4 do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP:=inttostr(ord(host.h_addr^[i-1]));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if i&lt;4 then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ipstr:=ipstr+IP+'.'<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edit1.Text:=ipstr+ip;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSACleanup;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;</p>
<p>5、取得计算机名。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function tform1.get_name:string;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp;&nbsp; ComputerName: PChar;&nbsp;&nbsp;&nbsp; size: DWord;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetMem(ComputerName,255);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size:=255;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if GetComputerName(ComputerName,size)=False then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result:=''<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result:=ComputerName;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FreeMem(ComputerName);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure TForm1.Button1Click(Sender: TObject);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label1.Caption:=get_name;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;</p>
<p>6、查找局域网上的sqlserver报务器。<br/>&nbsp;&nbsp;&nbsp;&nbsp; uses Comobj;<br/>&nbsp;&nbsp;&nbsp;&nbsp; procedure TForm1.Button1Click(Sender: TObject);<br/>&nbsp;&nbsp;&nbsp;&nbsp; var<br/>&nbsp;&nbsp;&nbsp;&nbsp; SQLServer:Variant;<br/>&nbsp;&nbsp;&nbsp;&nbsp; ServerList:Variant;<br/>&nbsp;&nbsp;&nbsp;&nbsp; i,nServers:integer;<br/>&nbsp;&nbsp;&nbsp;&nbsp; sRetValue:String;<br/>&nbsp;&nbsp;&nbsp;&nbsp; begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQLServer := CreateOleObject('SQLDMO.Application');<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerList:= SQLServer.ListAvailableSQLServers;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nServers:=ServerList.Count;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i := 1 to nservers do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ListBox1.Items.Add(ServerList.Item(i));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQLServer:=NULL;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; serverList:=NULL;<br/>&nbsp;&nbsp;&nbsp;&nbsp; end;</p>
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表