Action
Establishes a connection to a TCP/IP server.
Syntax
Result = SOCKETCONNECT(socket, IP, port)
Remarks
Result |
A byte that is assigned with 0 when the connection succeeded. It will return 1 when an error occurred. |
IP |
The IP number of the server you want to connect to.
This may be a number like 192.168.0.2 or a LONG variable that is assigned with an IP number.
Note that the LSB of the LONG, must contain the MSB of the IP number. |
Port |
The port number of the server you are connecting to. |
You can only connect to a server. Standardized servers have dedicated port numbers. For example, the HTTP protocol(web server) uses port 80.
After you have established a connection the server might send data. This depends entirely on the used protocol. Most servers will send some welcome text, this is called a banner.
You can send or receive data once the connection is established.
The server might close the connection after this or you can close the connection yourself. This also depends on the protocol.
See also
CONFIG TCPIP, GETSOCKET , SOCKETSTAT , TCPWRITE, TCPWRITESTR, TCPREAD, CLOSESOCKET , SOCKETLISTEN
Example
'-----------------------------------------------------------------------------------------
'name : servertest.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : start the easytcp.exe program after the chip is programmed
' and create 2 connections
'micro : Mega161
'suited for demo : no
'commercial addon needed : yes
'-----------------------------------------------------------------------------------------
$regfile = "m161def.dat" ' specify the used micro
$crystal = 4000000 ' used crystal frequency
$baud = 19200 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Const Sock_stream = $01 ' Tcp
Const Sock_dgram = $02 ' Udp
Const Sock_ipl_raw = $03 ' Ip Layer Raw Sock
Const Sock_macl_raw = $04 ' Mac Layer Raw Sock
Const Sel_control = 0 ' Confirm Socket Status
Const Sel_send = 1 ' Confirm Tx Free Buffer Size
Const Sel_recv = 2 ' Confirm Rx Data Size
'socket status
Const Sock_closed = $00 ' Status Of Connection Closed
Const Sock_arp = $01 ' Status Of Arp
Const Sock_listen = $02 ' Status Of Waiting For Tcp Connection Setup
Const Sock_synsent = $03 ' Status Of Setting Up Tcp Connection
Const Sock_synsent_ack = $04 ' Status Of Setting Up Tcp Connection
Const Sock_synrecv = $05 ' Status Of Setting Up Tcp Connection
Const Sock_established = $06 ' Status Of Tcp Connection Established
Const Sock_close_wait = $07 ' Status Of Closing Tcp Connection
Const Sock_last_ack = $08 ' Status Of Closing Tcp Connection
Const Sock_fin_wait1 = $09 ' Status Of Closing Tcp Connection
Const Sock_fin_wait2 = $0a ' Status Of Closing Tcp Connection
Const Sock_closing = $0b ' Status Of Closing Tcp Connection
Const Sock_time_wait = $0c ' Status Of Closing Tcp Connection
Const Sock_reset = $0d ' Status Of Closing Tcp Connection
Const Sock_init = $0e ' Status Of Socket Initialization
Const Sock_udp = $0f ' Status Of Udp
Const Sock_raw = $10 ' Status of IP RAW
$lib "tcpip.lbx" ' specify the tcpip library
Print "Init , set IP to 192.168.0.8" ' display a message
Enable Interrupts ' before we use config tcpip , we need to enable the interrupts
Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 0.0.0.0 , Localport = 1000 , Tx = $55 , Rx = $55
'Use the line below if you have a gate way
'Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 192.168.0.1 , Localport = 1000 , Tx = $55 , Rx = $55
Dim Bclient As Byte ' socket number
Dim Idx As Byte
Dim Result As Word ' result
Dim S As String * 80
Dim Flags As Byte
Dim Peer As Long
Do
For Idx = 0 To 3
Result = Socketstat(idx , 0) ' get status
Select Case Result
Case Sock_established
If Flags.idx = 0 Then ' if we did not send a welcome message yet
Flags.idx = 1
Result = Tcpwrite(idx , "Hello from W3100A{013}{010}") ' send welcome
End If
Result = Socketstat(idx , Sel_recv) ' get number of bytes waiting
If Result > 0 Then
Do
Result = Tcpread(idx , S)
Print "Data from client: " ; Idx ; " " ; S
Peer = Getdstip(idx)
Print "Peer IP " ; Ip2str(peer)
'you could analyse the string here and send an appropiate command
'only exit is recognized
If Lcase(s) = "exit" Then
Closesocket Idx
Elseif Lcase(s) = "time" Then
Result = Tcpwrite(idx , "12:00:00{013}{010}") ' you should send date$ or time$
End If
Loop Until Result = 0
End If
Case Sock_close_wait
Print "close_wait"
Closesocket Idx
Case Sock_closed
Print "closed"
Bclient = Getsocket(idx , Sock_stream , 5000 , 0) ' get socket for server mode, specify port 5000
Print "Socket " ; Idx ; " " ; Bclient
Socketlisten Idx
Print "Result " ; Result
Flags.idx = 0 ' reset the hello message flag
End Select
Next
Loop
End