Difference between revisions of "OPENHOST"
|Line 101:||Line 101:|
Revision as of 04:38, 9 October 2009
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 that attempts to connect as a Client. If not it attempts to become the Host.
- PRINT "Mini Messenger"
- LOCATE , , 1 ' display the print cursor for INKEY$
- client = _OPENCLIENT("TCP/IP:7319:localhost") ' Attempt to connect to local host as a client
- IF client THEN
- 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 incoming messages to all clients
- NEXT i
- GetMessage client ' allow host to get messages and chat also
- SendMessage myname$, mymessage$, client
- _DELAY 0.01 ' reduce CPU usage
- 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
- 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
- END IF
- IF k$ = CHR$(27) THEN SYSTEM ' [Esc] key ends program
- END SUB
Explanation: The SendMessage SUB program controls the program exit. Entering no message and hitting [Enter] or pressing the [Esc]] key closes the program. Both SUB programs allow a Client or Host to communicate with others simply. If both the Client and Host procedures create errors hit [Esc] to exit program.