root / proj / src / Channel.java @ 1
History | View | Annotate | Download (1.59 KB)
1 | 1 | up20160559 | import java.io.IOException; |
---|---|---|---|
2 | import java.net.DatagramPacket; |
||
3 | import java.net.InetAddress; |
||
4 | import java.net.MulticastSocket; |
||
5 | import java.net.UnknownHostException; |
||
6 | |||
7 | public class Channel extends Thread{ |
||
8 | |||
9 | protected MulticastSocket socket = null; |
||
10 | protected byte[] buf = new byte[64000]; |
||
11 | private String IP; |
||
12 | private int Port; |
||
13 | private Peer peer;
|
||
14 | |||
15 | public Channel(String mcIP,int mcPort, Peer peer) { |
||
16 | this.IP = mcIP;
|
||
17 | this.Port = mcPort;
|
||
18 | this.peer = peer;
|
||
19 | } |
||
20 | public void run() { |
||
21 | |||
22 | try{
|
||
23 | this.socket = new MulticastSocket(this.Port); |
||
24 | InetAddress group = InetAddress.getByName(this.IP); |
||
25 | this.socket.joinGroup(group);
|
||
26 | while (true) { |
||
27 | DatagramPacket packet = new DatagramPacket(buf, buf.length); |
||
28 | this.socket.receive(packet);
|
||
29 | |||
30 | |||
31 | new Thread(new MessageParser(packet, peer)).start(); |
||
32 | String received = new String( |
||
33 | packet.getData(), 0, packet.getLength());
|
||
34 | if ("end".equals(received)) { |
||
35 | break;
|
||
36 | } |
||
37 | } |
||
38 | this.socket.leaveGroup(group);
|
||
39 | this.socket.close();
|
||
40 | } |
||
41 | catch(IOException ex) { |
||
42 | System.out.println("Channel Exception:" + ex.toString()); |
||
43 | ex.printStackTrace(); |
||
44 | } |
||
45 | } |
||
46 | |||
47 | |||
48 | public void sendMessage(byte[] msg) throws UnknownHostException { |
||
49 | |||
50 | |||
51 | DatagramPacket packet = new DatagramPacket(msg, msg.length, InetAddress.getByName(this.IP), this.Port); |
||
52 | |||
53 | try {
|
||
54 | this.socket.send(packet);
|
||
55 | } catch (IOException e) { |
||
56 | e.printStackTrace(); |
||
57 | } |
||
58 | } |
||
59 | |||
60 | } |