Итак, коды классов сервера и клиента во многом очень похожи, отличаются они лишь методом run, код которого приведен в листинге 15.3. Листинг 15.3. Метод run класса C4Client – это сердце клиента игры Connect 4
public void run {
try {
// соединиться с серверным устройством
canvas.setStatus("Connecting to peer server..."); //Клиент отображает начальное соединение, что говорит о том, что он пытается соединиться с сервером
dc = null;
while (dc == null)
dc = (DatagramConnection)Connector.open("datagram://localhost:5555"); //Номер порта клиента должен совпадать с номером порта сервера
while (true) {
// попробовать отправить датаграммный пакет
if (!connected) //Если соединение не установлено, отправить клиентское сообщение об установлении соединения серверу
sendMessage("Client");
// попробовать получить датаграммный пакет
Datagram dg = dc.newDatagram(32);
dc.receive(dg);
//проверить, что датаграмма содержит данные
if (dg.getLength > 0) {
String data = new String(dg.getData, 0, dg.getLength);
if (data.equals("Server")) { //Ответить на сообщение сервера о соединении
// сообщить пользователю об установлении соединения
canvas.setStatus("Connected to peer server.");
canvas.newGame;
connected = true;
}
else {
// отправить игровые данные по сети
canvas.receiveMessage(data); //Сообщение содержит символы азбуки Морзе, поэтому его следует передать холсту
}
}
}
}
catch (ConnectionNotFoundException cnfe) {
System.err.println("The network server is unavailable.");
}
catch (IOException ioe) {
}
}