Платформа программирования J2ME для портативных устройств

         

Сервер порождает


import javax.microedition.io.Connector;

import javax.microedition.io.StreamConnection;

import javax.microedition.io.StreamConnectionNotifier;

import Java.io.lOException;

/**

Данный класс реализует службу, которая прослушивает запросы

клиентских соединений на известном сокете.

Он открывает соединение на предварительно определенном номере порта.

А затем блокирует обработку на данном порте,

ожидая клиентского запроса соединения.

Когда запрос появляется, он принимает его и открывает новое

соединение сокета. Эти два этапа выражаются в реализации,

уведомляющей реализацию клиента о новом соединении сокета.



Этот сервер затем порождает компонент и передает его новому

объекту соединения. Компонент запускает отдельную нить. Компонент

теперь свободен для взаимодействия с клиентом асинхронно

от продолжающейся работы сервера.

public class ServerSocket imlements Runnable

{

// Порт по умолчанию, на котором установлен известный

// сокет. public static final String DEFAULT_PORT = "9876";

// Порт, на котором установлен известный

// сокет. protected String wellKnownPort;

// URI, который данный сервер использует для открытия своего

// известного сокета. protected String uri;

// Соединение с известным сокетом.

protected StreamConnectionNotifier wellKnownConn;

// Соединение сокета, которое соединяется с клиентом,

protected StreamConnection clientConn;

/**

Конструктор для подклассов.

*/

protected ServerSocket()

super ();

/**

Конструктор.

@param port Известный порт, на котором устанавливается

этот объект как блок прослушивания.

*/

public ServerSocket (String port)

}

thisl);
if (port == null)

{

wellKnownPort = DEFAULT_PORT;

}

else

}

wellKnownPort = port;

}

setURI(port);

{

protected void setURI(String port)

{

StringBuffer buf = new StringBuffer("socket://:");

buf.append(port);
uri = buf.toString();

}

/**

Запустите данный сервер. Этот метод должен быть

вызван явно после создания данного объекта. Он запускает

прослушивание запросов клиентов на известном сокете.



Оператор вызова должен запустить это выполнение в отдельной нити.

*/

public void run()

{

while (true)

{

try

{

// Откройте соединение известного сокета для данной

// «службы». wellKnownConn = (StreamConnectionNotifier)

Connector.open(uri);


//Прослушиваем запросы соединения. Данный вызов

// блокирует работу до тех пор, пока не будет получен

// запрос на соединение.

clientConn = wellKnownConn.acceptAndOpen()

// Создадим экземпляр агента»сервера, объект, который

// представляет службу для клиента. Каждый экземпляр

// взаимодействует с одним клиентом.

// Порождаем нить для взаимодействия с

// клиентом, создавшим запрос на соединение.

ServerAgent agent = new ServerAgent(clientConn);


Thread thread = new Thread (agent);


} catch (lOException ioe)

( System.out.printlnfioe.getMessage!));


ioe.printStackTrace();
break;

)

}

}

}


Содержание раздела