OPENHOST
Revision as of 02:42, 9 October 2009 by imported>Clippy
The _OPENHOST function opens a Host which listens for new connections and returns a Host status handle.
- Syntax: host_handle = _OPENHOST("TCP/IP:8080")
- Creates an ILLEGAL FUNCTION CALL if called with a string argument of the wrong syntax.
- The port used in the syntax example is 8080. Use the same port number in the _OPENHOST function.
- Valid handles are usually negative numbers.
- If the syntax is correct but they fail to begin/connect a handle of 0 is returned. * Always check if the handle returned is 0 (failed) before continuing.
- CLOSE host_handle closes the host. A failed handle value of 0 does not need to be closed.
Example: Chat program
- PRINT "Mini Messenger"
- LOCATE , , 1 ' display the print cursor
- client = _OPENCLIENT("TCP/IP:7319:localhost") ' Attempt to connect to local host as a client
- IF client THEN
- PRINT "[connected to " + _CONNECTIONADDRESS(client) + "]"
- _TITLE "Client - Mini Messenger"
- INPUT "Enter your name: ", myname$
- PRINT #client, myname$ + " connected!"
- DO
- GetMessage client
- SendMessage myname$, mymessage$, client ' display current input on screen
- _DELAY 0.01 ' reduce CPU usage
- LOOP
- ELSE ' "if client" alternative to open a new Host
- PRINT "[No existing host found]"
- host = _OPENHOST("TCP/IP:7319") ' no host found, so begin new host
- IF host THEN
- _TITLE "Host - Mini Messenger"
- PRINT "[Beginning new host chat session!]"
- DIM Chatters(1 to 1000) ' array to hold other client info
- numclients = 0
- client = _OPENCLIENT("TCP/IP:7319:localhost")
- IF client = 0 THEN PRINT "ERROR: could not attach host's personal client to host!"
- INPUT "Enter your name:", myname$
- PRINT #client, myname$ + " connected!"
- PRINT "[Chat session active!]"
- DO ' host main loop
- newclient = _OPENCONNECTION(host) ' receive any new connection
- IF newclient THEN
- numclients = numclients + 1
- Chatters(numclients) = newclient
- PRINT #Chatters(numclients),"Welcome!"
- END IF
- FOR i = 1 TO numclients ' distribute any incoming message to all clients
- NEXT i
- GetMessage client
- SendMessage myname$, mymessage$, client
- _DELAY 0.01 ' reduce CPU usage
- LOOP
- END IF ' host
- PRINT "ERROR: Could not begin new host!"
- END IF ' if client from start
- .........................END OF MAIN PROGRAM ................
- SUB GetMessage (client) ' get & display any new message
- INPUT #client, newmessage$
- IF newmessage$ <> "" THEN
- VIEW PRINT 1 TO 23
- LOCATE 23,1
- PRINT newmessage$
- VIEW PRINT 1 TO 24
- END IF
- END SUB
- SUB SendMessage (myname$, mymessage$, client) ' simple input handler
- k$ = INKEY$$
- IF LEN(k$) THEN
- END IF
- LOCATE 24, 1: PRINT SPACE$(80); ' erase previous display
- LOCATE 24, 1: PRINT myname$ + ": ";mymessage$;
- IF k$ = CHR$(13) THEN ' [Enter] sends the message
- IF mymessage$ = "" THEN SYSTEM ' [Enter] with no message ends program
- PRINT #client, myname$ + ": " + mymessage$
- mymessage$ = ""
- [[END IF]
- IF k$ = CHR$(27) THEN SYSTEM ' [Esc] key ends program
- END SUB
See also: _OPENCONNECTION, _OPENCLIENT, _CONNECTED