Программирование на Java
Шрифт:
try {
DatagramSocket s =
new DatagramSocket(3456);
byte data[]=new byte[3];
DatagramPacket p =
new DatagramPacket(data, 3);
System.out.println("Waiting...");
s.receive(p);
System.out.println("Datagram received: "+
data[0]+", "+data[1]+", "+data[2]);
s.close;
}
catch (SocketException e) {
e.printStackTrace;
}
catch (IOException e) {
e.printStackTrace;
}
Если
В заключение приведем пример сервера, который получает датаграммы и отправляет их обратно, дописав к ним слово received.
import java.io.*;
import java.net.*;
public class DatagramDemoServer {
public static final int PORT = 2000;
private static final int LENGTH_RECEIVE = 1;
private static final byte[] answer = ("received").getBytes;
private DatagramSocket servSocket = null;
private boolean keepRunning = true;
public static void main(String[] args) {
DatagramDemoServer server = new DatagramDemoServer;
server.service;
}
public DatagramDemoServer {
try {
servSocket = new DatagramSocket(PORT);
}
catch(SocketException e) {
System.err.println("Unable to open socket : " + e.toString);
}
}
protected void service {
DatagramPacket datagram;
InetAddress clientAddr;
int clientPort;
byte[] data;
while (keepRunning) {
try {
data = new byte[LENGTH_RECEIVE];
datagram = new DatagramPacket(data, data.length);
servSocket.receive(datagram);
clientAddr = datagram.getAddress;
clientPort = datagram.getPort;
data = getSendData(datagram.getData);
datagram = new DatagramPacket(data, data.length,
clientAddr, clientPort);
servSocket.send(datagram);
}
catch(IOException e) {
System.err.println("I/O Exception : " + e.toString);
}
}
}
protected byte[] getSendData(byte b[]) {
byte[] result = new byte[b.length+answer.length];
System.arraycopy(b, 0, result, 0, b.length);
System.arraycopy(answer, 0, result, b.length, answer.length);
return result;
}
}
Пример 16.4.
Заключение
В данном разделе были рассмотрены теоретические основы сети как одной большой взаимодействующей системы. Были описаны все уровни модели OSI и их функциональные назначения. Также были представлены основные утилиты, используемые для настройки и обнаружения неисправностей в сети. Затем были рассмотрены средства Java для работы с наиболее распространенными сетевыми протоколами. Приведен подробный пример и для более сложного случая – сервер, обслуживающий несколько клиентов одновременно.