View difference between Paste ID: hz6eCCqN and
SHOW:
|
|
- or go back to the newest paste.
1 | - | |
1 | + | package udps; |
2 | ||
3 | import java.io.IOException; | |
4 | import java.net.DatagramPacket; | |
5 | import java.net.DatagramSocket; | |
6 | import java.net.SocketException; | |
7 | import java.util.concurrent.ExecutorService; | |
8 | import java.util.concurrent.Executors; | |
9 | import java.util.logging.Level; | |
10 | import java.util.logging.Logger; | |
11 | ||
12 | public class UDPServer { | |
13 | ||
14 | public static void main(String[] args) { | |
15 | UDPServer server = new UDPServer(); | |
16 | server.init(); | |
17 | } | |
18 | ||
19 | public void init() { | |
20 | Thread serverThread = new Thread(new Server()); | |
21 | serverThread.start(); | |
22 | } | |
23 | ||
24 | public class Server implements Runnable { | |
25 | ||
26 | public void run() { | |
27 | DatagramSocket socket = null; | |
28 | ||
29 | try { | |
30 | socket = new DatagramSocket(7777); | |
31 | } catch (SocketException ex) { | |
32 | Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex); | |
33 | } | |
34 | ||
35 | ExecutorService pool = Executors.newFixedThreadPool(32); | |
36 | ||
37 | for (;;) { | |
38 | DatagramPacket packet = new DatagramPacket(new byte[1024], 1024); | |
39 | ||
40 | try { | |
41 | socket.receive(packet); | |
42 | } catch (IOException ex) { | |
43 | Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex); | |
44 | } | |
45 | ||
46 | pool.execute(new Responder(socket, packet)); | |
47 | } | |
48 | } | |
49 | } | |
50 | ||
51 | public class Responder implements Runnable { | |
52 | ||
53 | DatagramSocket socket = null; | |
54 | DatagramPacket packet = null; | |
55 | ||
56 | public Responder(DatagramSocket socket, DatagramPacket packet) { | |
57 | this.socket = socket; | |
58 | this.packet = packet; | |
59 | } | |
60 | ||
61 | public void run() { | |
62 | byte[] data = "PONG".getBytes(); | |
63 | ||
64 | DatagramPacket response = new DatagramPacket(data, data.length, packet.getAddress(), packet.getPort()); | |
65 | ||
66 | System.out.println(packet.getData().toString()); | |
67 | ||
68 | try { | |
69 | socket.send(response); | |
70 | } catch (IOException ex) { | |
71 | Logger.getLogger(UDPServer.class.getName()).log(Level.SEVERE, null, ex); | |
72 | } | |
73 | } | |
74 | } | |
75 | } |