Densyy Posted January 6, 2012 Report Share Posted January 6, 2012 (edited) Bom pessoal to com essa duvida á algum tempinho jáPreciso capturar o ip externoexemplo : (201.xx.xxx.xx)Mais preciso receber isso sem ter q usar componentescomo Inet , WebBrowser...vi um tópico falando sobre uma dll que existe no windows q armazena o ipOutra Duvida que tenho também é em relação ao Winsock1.ListenToda vez que uso o "Listen"ele vai deixar o programa no estado de escultaporém ele vai perguntar se você deseja deixar em estado de "Listen"Somente para Local ou para Wan TambémGostaria de Saber se é possivel definir para redes publicas tambemSem que essa pergunta seja feita ao programaSe alguém poder me dar um help aquiFicarei muito grato Edited January 6, 2012 by Densyy Quote Link to comment Share on other sites More sharing options...
0 Densyy Posted January 6, 2012 Author Report Share Posted January 6, 2012 Bom pra quem tiver a primeira duvida aqui vai a respostaNo modulo você põe Const MAX_IP = 5 'To make a buffer... i dont think you have more than 5 ip on your pc.. Type IPINFO dwAddr As Long ' IP address dwIndex As Long ' interface index dwMask As Long ' subnet mask dwBCastAddr As Long ' broadcast address dwReasmSize As Long ' assembly size unused1 As Integer ' not currently used unused2 As Integer '; not currently used End Type Type MIB_IPADDRTABLE dEntrys As Long 'number of entries in the table mIPInfo(MAX_IP) As IPINFO 'array of IP address entries End Type Type IP_Array mBuffer As MIB_IPADDRTABLE BufferLen As Long End Type Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Public Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, pdwSize As Long, ByVal Sort As Long) As Long 'converts a Long to a string Public Function ConvertAddressToString(longAddr As Long) As String Dim myByte(3) As Byte Dim Cnt As Long CopyMemory myByte(0), longAddr, 4 For Cnt = 0 To 3 ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "." Next Cnt ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1) End Function Public Function GetWanIP() As String Dim Ret As Long, Tel As Long Dim bBytes() As Byte Dim TempList() As String Dim TempIP As String Dim Tempi As Long Dim Listing As MIB_IPADDRTABLE Dim L3 As String On Error GoTo END1 GetIpAddrTable ByVal 0&, Ret, True If Ret <= 0 Then Exit Function ReDim bBytes(0 To Ret - 1) As Byte ReDim TempList(0 To Ret - 1) As String 'retrieve the data GetIpAddrTable bBytes(0), Ret, False 'Get the first 4 bytes to get the entry's.. ip installed CopyMemory Listing.dEntrys, bBytes(0), 4 For Tel = 0 To Listing.dEntrys - 1 'Copy whole structure to Listing.. CopyMemory Listing.mIPInfo(Tel), bBytes(4 + (Tel * Len(Listing.mIPInfo(0)))), Len(Listing.mIPInfo(Tel)) TempList(Tel) = ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr) Next Tel 'Sort Out The IP For WAN TempIP = TempList(0) For Tempi = 0 To Listing.dEntrys - 1 L3 = Left(TempList(Tempi), 3) If L3 <> "169" And L3 <> "127" And L3 <> "192" Then TempIP = TempList(Tempi) End If Next Tempi GetWanIP = TempIP 'Return The TempIP Exit Function END1: GetWanIP = "" End Function e no form Private Sub Form_Load() MsgBox GetWanIP End SubAgora só to com duvida no Winsock1.Listen ^^ Quote Link to comment Share on other sites More sharing options...
0 kuroi Posted January 7, 2012 Report Share Posted January 7, 2012 Não entendi direito a dúvida... Só usei o Winsock para conexões locais, mas pelo que sei, funciona remotamente também. O problema é que se o seu computador está em uma rede, ele utiliza um IP que é único para toda esta rede, que também pode estar sendo utilizado por vários outros dispositivos.Sendo assim, uma conexão remota tentando conectar no IP da rede onde está o seu computador vai cair no servidor ou no roteador q distribui a conexão nessa rede. Aí no caso, acho que cada dispositivo na rede deve ocupar uma porta para conexões remotas, ou então cada conexão de cada dispositivo ocupa uma porta diferente, realmente não sei ao certo, mas acho q isso era chamado de "port-forwarding", tente fazer uma pesquisa pelo termo relacionado a Winsock no VB6.Agora no caso de você querer o contrário - restringir a conexão somente para a LAN, aí não sei se tem uma maneira melhor, mas você poderia analisar o IP que está conectando e verificar se ele faz parte da faixa de IPs locais (exemplo, se começar com "192.168.", você já sabe que é da rede local, então você libera). Quote Link to comment Share on other sites More sharing options...
0 Densyy Posted January 7, 2012 Author Report Share Posted January 7, 2012 Tipo minha duvida é a seguinteEu quero ultilizar o programa para redes Wanquando eu abro ele pela primeira vez e deixo o programa em estado de esculta (Servidor)Ai neste momente aparece um aviso do firewall dizendo se quero deixa em estado de esculta somente para LAN ou para WAN tambemporem eu n quero q esse aviso apareça e ele esteja em estado de esculta para Redes Wan tambemComo algo anonimoIntende?Agradeço desde já Quote Link to comment Share on other sites More sharing options...
0 kuroi Posted January 9, 2012 Report Share Posted January 9, 2012 Entendi, se o firewall estiver habilitado, sempre vai perguntar mesmo, a pessoa tem que saber que o programa está conectando a internet, e autoriza se quiser.Se você quer burlar o firewall do windows, isso eu não sei fazer. Quote Link to comment Share on other sites More sharing options...
Question
Densyy
Bom pessoal to com essa duvida á algum tempinho já
Preciso capturar o ip externo
exemplo : (201.xx.xxx.xx)
Mais preciso receber isso sem ter q usar componentes
como Inet , WebBrowser...
vi um tópico falando sobre uma dll que existe no windows q armazena o ip
Outra Duvida que tenho também é em relação ao Winsock1.Listen
Toda vez que uso o "Listen"
ele vai deixar o programa no estado de esculta
porém ele vai perguntar se você deseja deixar em estado de "Listen"
Somente para Local ou para Wan Também
Gostaria de Saber se é possivel definir para redes publicas tambem
Sem que essa pergunta seja feita ao programa
Se alguém poder me dar um help aqui
Ficarei muito grato
Edited by DensyyLink to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.