TCPWRITESTR

TCPWRITESTR

Top  Previous  Next

Action

Sends a string to an open socket connection.

 

 

Syntax

Result = TCPWRITESTR( socket , var , param)

 

 

Remarks

Result

A word variable that will be assigned with the number of bytes actually written to the socket.

 

When the free transmission buffer is large enough to accept all the data, the result will be the same as BYTES. When there is not enough space, the number of written bytes will be returned.

 

When there is no space, 0 will be returned.

Socket

The socket number you want to send data to (0-3). 0-7 for W5200/W5300.

Var

The name of a string variable.

Param

A parameter that might be 0 to send only the string or 255, to send the string with an additional CR + LF

 

This option was added because many protocols expect CR + LF at the end of the string.

 

The TCPwriteStr function is a special variant of the TCPwrite function.

It will use TCPWrite to send the data.

 

 

See also

CONFIG TCPIP, GETSOCKET , SOCKETCONNECT, SOCKETSTAT , TCPWRITE, TCPREAD, SOCKETCLOSE , SOCKETLISTEN, SOCKETDISCONNECT, URL2IP

 

 

Example

'-------------------------------------------------------------------------------

'                               SMTP.BAS

'                        (c) 2002 MCS Electronics

' sample that show how to send an email with SMTP protocol

'-------------------------------------------------------------------------------

 

$regfile = "m161def.dat"                                   ' used processor

$crystal = 4000000                                         ' used crystal

$baud = 19200                                               ' baud rate

 

Const Debug = -1                                           ' for sending feeback to the terminal

 

 

#if Debug

Print "Start of SMTP demo"

#endif

 

Enable Interrupts                                         ' enable interrupts

'specify  MAC, IP, submask and gateway

'local port value will be used when you do not specify a port value while creating a connection

'TX and RX are setup to use 4 connections each with a 2KB buffer

Config Tcpip = Int0 , Mac = 00.44.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 the used variables

Dim S As String * 50 , I As Byte , J As Byte , Tempw As Word

#if Debug

Print "setup of W3100A complete"

#endif

 

'First we need a socket

I = Getsocket(0 , Sock_stream , 5000 , 0)

'             ^ socket numer     ^ port

#if Debug

Print "Socket : " ; I

'the socket must return the asked socket number. It returns 255 if there was an error

#endif

 

If I = 0 Then                                             ' all ok

'connect to smtp server

 J = Socketconnect(i , 194.09.0. , 25)                   ' smtp server and SMTP port 25

'                 ^socket

'                      ^ ip address of the smtp server

'                                          ^ port 25 for smtp

  '  DO NOT FORGET to ENTER a valid IP number of your ISP smtp server

#if Debug

    Print "Connection : " ; J

    Print S_status(1)

#endif

If J = 0 Then                                           ' all ok

    #if Debug

      Print "Connected"

    #endif

    Do

       Tempw = Socketstat(i , 0)                         ' get status

      Select Case Tempw

        Case Sock_established                           ' connection established

             Tempw = Tcpread(i , S)                     ' read line

            #if Debug

                Print S                                 ' show info from smtp server

            #endif

            If Left(s , 3) = "220" Then                 ' ok

                Tempw = Tcpwrite(i , "HELO username{013}{010}" )     ' send username

                '                           ^^^ fill in username there

                #if Debug

                  Print Tempw ; "  bytes written"       ' number of bytes actual send

                #endif

                Tempw = Tcpread(i , S)                   ' get response

                #if Debug

                  Print S                               ' show response

                #endif

                If Left(s , 3) = "250" Then             ' ok

                   Tempw = Tcpwrite(i , "MAIL FROM:<tcpip@test.com>{013}{010}")     ' send from address

                   Tempw = Tcpread(i , S)               ' get response

                  #if Debug

                      Print S

                  #endif

                  If Left(s , 3) = "250" Then           ' ok

                      Tempw = Tcpwrite(i , "RCPT TO:<tcpip@test.com>{013}{010}")     ' send TO address

                      Tempw = Tcpread(i , S)             ' get response

                      #if Debug

                        Print S

                      #endif

                      If Left(s , 3) = "250" Then       ' ok

                         Tempw = Tcpwrite(i , "DATA{013}{010}")     ' speicfy that we are going to send data

                         Tempw = Tcpread(i , S)         ' get response

                        #if Debug

                            Print S

                        #endif

                        If Left(s , 3) = "354" Then     ' ok

                            Tempw = Tcpwrite(i , "From: tcpip@test.com{013}{010}")

                            Tempw = Tcpwrite(i , "To: tcpip@test.com{013}{010}")

                            Tempw = Tcpwrite(i , "Subject: BASCOM SMTP test{013}{010}")

                            Tempw = Tcpwrite(i , "X-Mailer: BASCOM SMTP{013}{010}")

                            Tempw = Tcpwrite(i , "{013}{010}")

                            Tempw = Tcpwrite(i , "This is a test email from BASCOM SMTP{013}{010}")

                            Tempw = Tcpwrite(i , "Add more lines as needed{013}{010}")

                            Tempw = Tcpwrite(i , ".{013}{010}")     ' end with a single dot

 

                            Tempw = Tcpread(i , S)       ' get response

                            #if Debug

                              Print S

                            #endif

                            If Left(s , 3) = "250" Then ' ok

                               Tempw = Tcpwrite(i , "QUIT{013}{010}")     ' quit connection

                               Tempw = Tcpread(i , S)

                              #if Debug

                                  Print S

                              #endif

                            End If

                        End If

                      End If

                  End If

                End If

            End If

        Case Sock_close_wait

            Print "CLOSE_WAIT"

            Closesocket I                                 ' close the connection

        Case Sock_closed

            Print "Socket CLOSED"                       ' socket is closed

            End

      End Select

    Loop

End If

End If

End                                                       'end program