URL2IP

From MCS Wiki AVR
(Difference between revisions)
Jump to: navigation, search
(Created page with "= <span class="f_Header">Action</span> = This function returns the IP address of an URL. <span style="font-family: Arial;"> </span> <span style="font-family: Arial;">&...")
 
 
(One intermediate revision by one user not shown)
Line 42: Line 42:
  
 
<span style="font-family: Arial;">&nbsp;</span>
 
<span style="font-family: Arial;">&nbsp;</span>
 
= <span style="font-family: Arial;">&nbsp;</span> =
 
  
 
= <span class="f_Header">Example</span> =
 
= <span class="f_Header">Example</span> =
 +
 +
<source lang="bascomavr">
 +
'-----------------------------------------------------------------------------------------
 +
'name : PING_SPI.bas http://www.faqs.org/rfcs/rfc792.html
 +
'copyright : (c) 1995-2016, MCS Electronics
 +
'purpose : Simple PING program
 +
'micro : Mega88
 +
'suited for demo : yes
 +
'commercial addon needed : no
 +
'-----------------------------------------------------------------------------------------
 +
$regfile = "m88def.dat" ' specify the used micro
 +
 +
$crystal = 8000000 ' used crystal frequency
 +
$baud = 19200 ' use baud rate
 +
$hwstack = 80 ' default use 64 for the hardware stack
 +
$swstack = 64 ' default use 64 for the SW stack
 +
$framesize = 180 ' default use 80 for the frame space
 +
 +
 +
Const Cdebug = 1
 +
 +
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
 +
 +
 +
'Configuration Of The SPI bus
 +
Config Spi = Hard , Interrupt = Off , Data_order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 0
 +
'Init the spi pins
 +
Spiinit
 +
 +
 +
'we do the usual
 +
Print "Init TCP" ' display a message
 +
Enable Interrupts ' before we use config tcpip , we need to enable the interrupts
 +
Config Tcpip = Noint , Mac = 12.128.12.34.56.78 , Ip = 192.168.1.70 , Submask = 255.255.255.0 , Gateway = 192.168.1.1 , Localport = 1000 , Tx = $55 , Rx = $55 , Chip = W5100 , Spi = 1 , Cs = Portb.2
 +
Print "Init done"
 +
 +
Dim Idx As Byte , Result As Word , J As Byte , Res As Byte
 +
Dim Ip As Long
 +
Dim Dta(12) As Byte , Rec(12) As Byte
 +
 +
 +
Dta(1) = 8 'type is echo
 +
Dta(2) = 0 'code
 +
 +
Dta(3) = 0 ' for checksum initialization
 +
Dta(4) = 0 ' checksum
 +
Dta(5) = 0 ' a signature can be any number
 +
Dta(6) = 1 ' signature
 +
Dta(7) = 0 ' sequence number - any number
 +
Dta(8) = 1
 +
Dta(9) = 65
 +
 +
Dim W As Word At Dta(1) + 2 Overlay 'same as dta(3) and dta(4)
 +
Dim B As Byte
 +
W = Tcpchecksum(dta(1) , 9) ' calculate checksum and store in dta(3) and dta(4)
 +
 +
#if Cdebug
 +
For J = 1 To 9
 +
Print Dta(j)
 +
Next
 +
#endif
 +
 +
Ip = Url2ip( "mcselec.com")
 +
Print Ip2str(ip)
 +
If Ip = 0 Then End
 +
 +
 +
Print "Socket " ; Idx ; " " ; Idx
 +
Setipprotocol Idx , 1 'set protocol to 1
 +
'the protocol value must be set BEFORE the socket is openend
 +
 +
Idx = Getsocket(idx , 3 , 5000 , 0)
 +
 +
Do
 +
' Result = Gettcpregs(&H403 , 2) : Print Hex(result)
 +
 +
' Print Hex(s_status(1))
 +
Result = Udpwrite(ip , 7 , Idx , Dta(1) , 9) 'write ping data '
 +
Print "W:" ; Result
 +
Waitms 300 ' depending on the hops, speed, etc
 +
Result = Socketstat(idx , Sel_recv) 'check for data
 +
Print "REC:" ; Result
 +
If Result >= 11 Then
 +
Print "Ok"
 +
Res = Tcpread(idx , Rec(1) , Result) 'get data with TCPREAD !!!
 +
#if Cdebug
 +
Print "DATA RETURNED :" ; Res '
 +
For J = 1 To Result
 +
Print Rec(j) ; " " ;
 +
Next
 +
Print
 +
#endif
 +
Else 'there might be a problem
 +
Print "Network not available"
 +
End If
 +
Waitms 10000
 +
Loop
 +
</source>
 +
 +
<br/>{{Languages}}
 +
 +
[[Category:BASCOM Language Reference]]

Latest revision as of 20:37, 17 January 2017

Contents

Action

This function returns the IP address of an URL.

 

 

Syntax

ip=URL2IP(URL)

 

 

Remarks

This function performs a DNS query to the google DNS server with address 8.8.8.8.

It returns either a 0 IP address or the IP address of the URL.

 

The URL must be a string or string constant.

At the moment, this function is only supported by the W5100 and W5200.

 

 

 

See also

CONFIG TCPIP, GETSOCKET , SOCKETCONNECT, SOCKETSTAT , TCPWRITE, TCPWRITESTR, CLOSESOCKET , SOCKETLISTEN , BASE64ENC

 

 

 

Example

'-----------------------------------------------------------------------------------------
'name : PING_SPI.bas http://www.faqs.org/rfcs/rfc792.html
'copyright : (c) 1995-2016, MCS Electronics
'purpose : Simple PING program
'micro : Mega88
'suited for demo : yes
'commercial addon needed : no
'-----------------------------------------------------------------------------------------
$regfile = "m88def.dat" ' specify the used micro
 
$crystal = 8000000 ' used crystal frequency
$baud = 19200 ' use baud rate
$hwstack = 80 ' default use 64 for the hardware stack
$swstack = 64 ' default use 64 for the SW stack
$framesize = 180 ' default use 80 for the frame space
 
 
Const Cdebug = 1
 
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
 
 
'Configuration Of The SPI bus
Config Spi = Hard , Interrupt = Off , Data_order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 0
'Init the spi pins
Spiinit
 
 
'we do the usual
Print "Init TCP" ' display a message
Enable Interrupts ' before we use config tcpip , we need to enable the interrupts
Config Tcpip = Noint , Mac = 12.128.12.34.56.78 , Ip = 192.168.1.70 , Submask = 255.255.255.0 , Gateway = 192.168.1.1 , Localport = 1000 , Tx = $55 , Rx = $55 , Chip = W5100 , Spi = 1 , Cs = Portb.2
Print "Init done"
 
Dim Idx As Byte , Result As Word , J As Byte , Res As Byte
Dim Ip As Long
Dim Dta(12) As Byte , Rec(12) As Byte
 
 
Dta(1) = 8 'type is echo
Dta(2) = 0 'code
 
Dta(3) = 0 ' for checksum initialization
Dta(4) = 0 ' checksum
Dta(5) = 0 ' a signature can be any number
Dta(6) = 1 ' signature
Dta(7) = 0 ' sequence number - any number
Dta(8) = 1
Dta(9) = 65
 
Dim W As Word At Dta(1) + 2 Overlay 'same as dta(3) and dta(4)
Dim B As Byte
W = Tcpchecksum(dta(1) , 9) ' calculate checksum and store in dta(3) and dta(4)
 
#if Cdebug
For J = 1 To 9
 Print Dta(j)
Next
#endif
 
Ip = Url2ip( "mcselec.com")
Print Ip2str(ip)
If Ip = 0 Then End
 
 
Print "Socket " ; Idx ; " " ; Idx
Setipprotocol Idx , 1 'set protocol to 1
'the protocol value must be set BEFORE the socket is openend
 
Idx = Getsocket(idx , 3 , 5000 , 0)
 
Do
' Result = Gettcpregs(&H403 , 2) : Print Hex(result)
 
' Print Hex(s_status(1))
 Result = Udpwrite(ip , 7 , Idx , Dta(1) , 9) 'write ping data '
 Print "W:" ; Result
 Waitms 300 ' depending on the hops, speed, etc
 Result = Socketstat(idx , Sel_recv) 'check for data
 Print "REC:" ; Result
 If Result >= 11 Then
 Print "Ok"
 Res = Tcpread(idx , Rec(1) , Result) 'get data with TCPREAD !!!
 #if Cdebug
 Print "DATA RETURNED :" ; Res '
 For J = 1 To Result
 Print Rec(j) ; " " ;
 Next
 Print
 #endif
 Else 'there might be a problem
 Print "Network not available"
 End If
 Waitms 10000
Loop

Languages   English  
Personal tools
Namespaces
Variants
Actions
Navigation
Language