This interface defines the server socket stream connection.
A server socket is accessed using a generic connection string with the host
omitted. For example, socket://:79
defines an inbound server
socket on port 79
. The host can be discovered using the
getLocalAddress
method.
The acceptAndOpen()
method returns a
SocketConnection
instance. In addition to the normal
StreamConnection
behavior, the SocketConnection
supports accessing the IP end point addresses of the live connection and
access to socket options that control the buffering and timing delays
associated with specific application usage of the connection.
Access to server socket connections may be restricted by the security policy
of the device. Connector.open
MUST check access for the initial
server socket connection and acceptAndOpen
MUST check before
returning each new SocketConnection
.
A server socket can be used to dynamically select an available port by
omitting both the host and the port parameters in the connection URL string.
For example, socket://
defines an inbound server socket on a
port which is allocated by the system. To discover the assigned port number
use the getLocalPort
method.
BNF Format for Connector.open() string
The URI must conform to the BNF syntax specified below. If the URI does not
conform to this syntax, an IllegalArgumentException
is thrown.
<socket_connection_string> |
::= "socket://" |
"socket://"<hostport> |
<hostport> |
::= host ":" port |
<host> |
::= omitted for inbound connections, See SocketConnection |
<port> |
::= numeric port number (omitted for system assigned port) |
Examples
The following examples show how a ServerSocketConnection
would
be used to access a sample loopback program.
// Create the server listening socket for port 1234
ServerSocketConnection scn = (ServerSocketConnection)
Connector.open("socket://:1234");
// Wait for a connection.
SocketConnection sc = (SocketConnection) scn.acceptAndOpen();
// Set application specific hints on the socket.
sc.setSocketOption(DELAY, 0);
sc.setSocketOption(LINGER, 0);
sc.setSocketOption(KEEPALIVE, 0);
sc.setSocketOption(RCVBUF, 128);
sc.setSocketOption(SNDBUF, 128);
// Get the input stream of the connection.
DataInputStream is = sc.openDataInputStream();
// Get the output stream of the connection.
DataOutputStream os = sc.openDataOutputStream();
// Read the input data.
String result = is.readUTF();
// Echo the data back to the sender.
os.writeUTF(result);
// Close everything.
is.close();
os.close();
sc.close();
scn.close();
..