public interface ServerSocketConnection extends StreamConnectionNotifier
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 mode
parameter of Connector.open
is not used.
The host can be discovered using the getLocalAddress
method.
When the ServerSocketConnection is open, it will be listening
for incoming connections on a specific port using one or more
AccessPoints of the device.
The ConnectionOption AccessPoint
is used to supply a specific AccessPoint
instance that must be used for the connection.
The connect
method of the AccessPoint will be
called to connect the AccessPoint.
If the access point is not valid or can not be connected, Connector.Open
throws a ConnectionNotFoundException
.
ConnectionOption values are validated during Connector.open
and any exceptions reported.
In the case an AccessPoint is not present in the parameters to
Connector.open, Connector.open must use one of the AccessPoints
already connected that supports the requested ConnectionOptions.
If no AccessPoint is available the implementation may initialize a
network connection and create an AccessPoint for it.
Otherwise, a ConnectionNotFoundException is thrown.
The getAccessPoints
method returns
the AccessPoint(s) that are listening for incoming connections.
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.
The ServerSocketConnection
supports the same connection options as
SocketConnection
to specify non-standard behavior of the connection.
The URI must conform to the BNF syntax specified below. If the URI
does not conform to this syntax, an IllegalArgumentException
is thrown.
<server_socket_connection_string> | ::= "socket://" | "socket://:"<port> |
<port> | ::= numeric port number (omitted for system assigned port) |
The following examples show how a ServerSocketConnection
would be used to access a sample loopback connection.
// 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(); ..
Modifier and Type | Method and Description |
---|---|
AccessPoint[] |
getAccessPoints()
Returns the AccessPoint(s) on which this connection is listening.
|
java.lang.String |
getLocalAddress()
Gets the local address of the socket.
|
int |
getLocalPort()
Returns the local port of the socket.
|
acceptAndOpen
close
AccessPoint[] getAccessPoints() throws java.io.IOException
java.io.IOException
- If an I/O error occurs.java.lang.String getLocalAddress() throws java.io.IOException
The host IP address that can be used to connect to this end of the socket connection from an external system. Since IP addresses may be dynamically assigned, a remote application will need to be robust in the face of IP number reassignment.
The local hostname (if available) can be accessed from
System.getProperty("microedition.hostname")
java.io.IOException
- if the connection was closedSocketConnection
int getLocalPort() throws java.io.IOException
java.io.IOException
- if the connection was closedSocketConnection
Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. Use of this specification is subject to license terms.