TCP OPEN statement

Purpose

Enable an application to communicate with a TCP/IP server or client using the TCP protocol over Winsock.

Syntax

As a client:

TCP OPEN {PORT p& | srvc$} AT host$ AS [#] fNum& [TIMEOUT timeoutval&]

As a server:

TCP OPEN SERVER [ADDR ip&] {PORT p& | srvc$} AS [#] fNum& [TIMEOUT timeoutval&]

Remarks

Open a TCP/IP port or service for communication, either as a client or as a server.

SERVER

If the keyword server is included, the TCP port is opened as a TCP/IP server; otherwise, it is opened as a TCP/IP client.

ADDR ip&

As a server, if you specify the optional ADDR ip&, the TCP server monitors connections at the specified ip& address.  Otherwise, the primary IP address for the computer is used by default.

PORT p&

As a client, PORT identifies the server port that the client attempts to connect to.  As a server, PORT identifies the port the server will monitor for connection requests.  You may specify either a port number or a service name, but not both.

srvc$

If the port number is not specified, a service name must be specified instead.  A service name takes the form of "http", "smtp", or "ftp", etc.  You may specify either a port number or a service name, but not both.

AT host$

As a client, host$ identifies the host to connect with.  host$ can be a domain such as "powerbasic.com", or a dotted IP address in string form, such as "127.0.0.1".

fNum&

A file number such as #1, or a variable with a value obtained using the FREEFILE function.

TIMEOUT

The optional TIMEOUT value allows you to specify how long a TCP SEND, RECV, PRINT, or LINE operation should wait for completion, in milliseconds (mSec).  If the specified number of milliseconds elapses without a response, the TCP operation will fail, and the ERR system variable will be set to indicate a run-time Error 24 ("Device timeout").  The default timeout is 60000 milliseconds (60 seconds).

See also

TCP and UDP communications, FREEFILE, TCP ACCEPT, TCP CLOSE, TCP LINE INPUT, TCP NOTIFY, TCP PRINT, TCP RECV, TCP SEND, UDP OPEN

Example

' Client TCP/IP example - retrieve a web page

#COMPILE EXE

 

FUNCTION PBMAIN() AS LONG

  LOCAL Buffer$, Site$

  LOCAL Entire_page$, Htmlfile$, Link$

  LOCAL Pos&, Length&

 

  Site$ = "www.powerbasic.com"

  File$ = "http://www.powerbasic.com/support/forums/Forum2/HTML/000031.html"

 

  ' Connecting...

  TCP OPEN "http" AT Site$ AS #1 TIMEOUT 60000

 

  ' Could we connect to site?

  IF ERR THEN

      BEEP

      EXIT FUNCTION

  END IF

 

  ' Send the GET request...

  TCP PRINT #1, "GET " & File$ & " HTTP/1.0"

  TCP PRINT #1, "Referer: http://www.powerbasic.com/"

  TCP PRINT #1, "User-Agent: TCP OPEN Example (www.powerbasic.com)

  TCP PRINT #1, ""

 

  ' Retrieve the page...

  DO

    TCP RECV #1, 4096, Buffer$

    Entire_page = Entire_page + Buffer$

  LOOP WHILE ISTRUE LEN(Buffer$) AND ISFALSE ERR

 

  ' Close the TCP/IP port...

  TCP CLOSE #1

END FUNCTION