Код класса C4Server в действительности не очень интересен, за исключением метода run(), код которого приведен в листинге 15.1. Листинг 15.1. Метод run() класса C4 Server это сердце приложения Connect 4
public void run() {
try {
// соединиться с клиентом
canvas.setStatus("Waiting for peer client..."); //Сервер отображает начальное соединение, что говорит о том, что он пытается соединиться с клиентом
dc = null;
while (dc == null)
dc = (DatagramConnection)Connector.open("datagram://:5555"); //Номер порта сервера должен совпадать с номером порта клиента
while (true) {
// попытка получения датаграммного пакета
Datagram dg = dc.newDatagram(32); //Размер датаграммы (32 байта) должен быть достаточно большим, чтобы
dc.receive(dg); //вместить наибольшее возможное сообщение, однако в игре Lighthouse сообщения не очень велики
address = dg.getAddress();
// убедиться, что пакет содержит данные
if (dg.getLength() > 0) { //Ответить на сообщение клиента о соединении
String data = new String(dg.getData(), 0, dg.getLength());
if (data.equals("Client")) {
// сообщить пользователю об удачном соединении
canvas.setStatus("Connected to peer client.");
canvas.newGame();
connected = true;
// попытка ответить на принятое сообщение
sendMessage("Server");
}
else { //Сообщение содержит символы азбуки Морзе, поэтому его следует передать холсту
// отправить игровые данные по сети
canvas.receiveMessage(data);
}
}
}
}
catch (IOException ioe) {
System.err.println("The network port is already taken.");
}
catch (Exception e) {
}
}