Package arc.net
Class Server
java.lang.Object
arc.net.Server
Manages TCP and optionally UDP connections from many Clients.
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionprotected ServerDiscoveryHandler
protected arc.net.Server.DiscoveryReceiver
protected InetAddress
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addListener
(NetListener listener) Adds a listener to the endpoint.void
bind
(int tcpPort) Opens a TCP only server.void
bind
(int tcpPort, int udpPort) Opens a TCP and UDP server.void
bind
(InetSocketAddress tcpPort, InetSocketAddress udpPort) void
close()
Closes all open connections and the server port(s).void
dispose()
Releases the resources used by this server, which may no longer be used.Returns the current connections.Returns the last thread that calledEndPoint.update(int)
for this end point.protected Connection
Allows the connections used by the server to be subclassed.void
removeListener
(NetListener listener) void
run()
Continually updates this end point untilEndPoint.stop()
is called.void
sendToAllExceptTCP
(int connectionID, Object object) void
sendToAllExceptUDP
(int connectionID, Object object) void
sendToAllTCP
(Object object) void
sendToAllUDP
(Object object) void
void
void
setConnectFilter
(Server.ServerConnectFilter connectFilter) void
setDiscoveryHandler
(ServerDiscoveryHandler newDiscoveryHandler) void
setMulticast
(String group, int multicastPort) void
start()
Starts a new thread that callsEndPoint.run()
.void
stop()
Closes this end point and causesEndPoint.run()
to return.void
update
(int timeout) Accepts any new connections and reads or writes any pending data for the current connections.
-
Field Details
-
multicastGroup
-
discoveryReceiver
protected arc.net.Server.DiscoveryReceiver discoveryReceiver -
discoveryHandler
-
-
Constructor Details
-
Server
- Parameters:
writeBufferSize
- One buffer of this size is allocated for each connected client. Objects are serialized to the write buffer where the bytes are queued until they can be written to the TCP socket.Normally the socket is writable and the bytes are written immediately. If the socket cannot be written to and enough serialized objects are queued to overflow the buffer, then the connection will be closed.
The write buffer should be sized at least as large as the largest object that will be sent, plus some head room to allow for some serialized objects to be queued in case the buffer is temporarily not writable. The amount of head room needed is dependent upon the size of objects being sent and how often they are sent.
objectBufferSize
- One (using only TCP) or three (using both TCP and UDP) buffers of this size are allocated. These buffers are used to hold the bytes for a single object graph until it can be sent over the network or deserialized.The object buffers should be sized at least as large as the largest object that will be sent or received.
-
-
Method Details
-
setMulticast
-
setDiscoveryHandler
-
setConnectFilter
-
bind
Opens a TCP only server.- Throws:
IOException
- if the server could not be opened.
-
bind
Opens a TCP and UDP server. All clients must also have a TCP and an UDP port.- Throws:
IOException
- if the server could not be opened.
-
bind
- Parameters:
udpPort
- May be null.- Throws:
IOException
-
update
Accepts any new connections and reads or writes any pending data for the current connections.- Specified by:
update
in interfaceEndPoint
- Parameters:
timeout
- Wait for up to the specified milliseconds for a connection to be ready to process. May be zero to return immediately if there are no connections to process.- Throws:
IOException
- See Also:
-
run
public void run()Description copied from interface:EndPoint
Continually updates this end point untilEndPoint.stop()
is called. -
start
public void start()Description copied from interface:EndPoint
Starts a new thread that callsEndPoint.run()
. -
stop
public void stop()Description copied from interface:EndPoint
Closes this end point and causesEndPoint.run()
to return. -
newConnection
Allows the connections used by the server to be subclassed. This can be useful for storage per connection without an additional lookup. -
sendToAllTCP
-
sendToAllExceptTCP
-
sendToTCP
-
sendToAllUDP
-
sendToAllExceptUDP
-
sendToUDP
-
addListener
Adds a listener to the endpoint. If the listener already exists, it is not added again.Should be called before connect().
- Specified by:
addListener
in interfaceEndPoint
-
removeListener
- Specified by:
removeListener
in interfaceEndPoint
-
close
public void close()Closes all open connections and the server port(s). -
dispose
Releases the resources used by this server, which may no longer be used.- Throws:
IOException
-
getUpdateThread
Description copied from interface:EndPoint
Returns the last thread that calledEndPoint.update(int)
for this end point. This can be useful to detect when long running code will be run on the update thread.- Specified by:
getUpdateThread
in interfaceEndPoint
-
getConnections
Returns the current connections. The array returned should not be modified.
-