# 26. Messaging

In client/server mode the TCP connection between the client and the server can also be used to send messages from the client to the server.
Possible usecases could be:
- shutting down and restarting the server
- triggering server backup
- using a customized login strategy to restrict the number of allowed client connections
Here is some example code how this can be done.
First we need to decide on a class that we want to use as the message. Any object that is storable in db4o can be used as a message, but strings and other simple types will not be carried (as they are not storable in db4o on their own). Let's create a dedicated class:

`class MyClientServerMessage { private String info; public MyClientServerMessage(String info){ this.info = info; } public Strint toString(){ return "MyClientServerMessage: " + info; } }`

Now we have to add some code to the server to react to arriving messages. This can be done by configuring a MessageRecipient object on the server. Let's simply print out all objects that arrive as messages. For the following we assume that we already have an ObjectServer object, opened with Db4o.openServer() .

`objectServer.ext().configure().setMessageRecipient( new MessageRecipient() { public void processMessage( ObjectContainer objectContainer, Object message) { // message objects will arrive in this code block System.out.println(message); } });`

Here is what we would do on the client to send the message:

`MessageSender sender = clientObjectContainer.ext().configure().getMessageSender(); sender.send(new MyClientServerMessage("Hello from client.");`

The MessageSender object on the client can be reused to send multiple messages.
--
generated by Doctor courtesy of db4objects Inc.