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). |
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 after 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, CLOSESOCKET , SOCKETLISTEN
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
$lib "tcpip.lbx" ' specify the name of the tcp ip lib
'W3100A constants
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
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