ServerSocket (Socket function)

From m204wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Get a reference to the server socket (Socket class)


This shared method obtains a reference to a Socket object for the server socket (socket number 1 in the $Sock_xxx API, as described in "Client versus Server Socket programming". It returns a reference to a Socket object instance, which can then be used with instance method calls to access the server socket. ServerSocket has no equivalent $function.

ServerSocket syntax

%socket = [%(Socket):]ServerSocket

Syntax terms

%socket A declared socket object or a reference to a Socket object.
%(Socket) The class name in parentheses denotes a virtual constructor method. See "Usage notes" below, for more information about invoking a Socket constructor.

Usage notes

  • ServerSocket is a virtual constructor and as such can be called with no method object, with an explicit class name, or with an object variable, even if that object is Null:

    %sock = ServerSocket %sock = %(Socket):ServerSocket %sock = %sock:ServerSocket

  • After ServerSocket returns, the socket is no longer accessible by its socket number (1). To access the socket by its number again, use GetSocketNumber.
  • ServerSocket can be used to obtain a Socket object reference for a socket already created by $Sock_Conn, or it can operate in an entirely object-oriented application.

Examples

In the following code fragment, a server socket receives data and replies to its client.

Begin %r Float %sepx Float %data is String len 255 %servsock is Object Socket %servsock = %(Socket):ServerSocket %r = %servsock:Set('PRSTOK', 'AMBIG|0D0A|0D|0A|07') %r = %servsock:Set('LINEND', '07') %r = %servsock:ReceiveAndParse(%data) If %r le 0 Then ... If %data eq 'Hello' Then ... %r = %servsock:SendWithLineEnd('OK') ...