SOCKETCONNECT

Top  Previous  Next

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