root / src / Channel / Channel.java @ 2
History | View | Annotate | Download (1.7 KB)
1 | 2 | up20160340 | package Channel; |
---|---|---|---|
2 | |||
3 | import Message.*; |
||
4 | import Peers.Peer; |
||
5 | |||
6 | import java.io.IOException; |
||
7 | import java.io.Serializable; |
||
8 | import java.net.*; |
||
9 | import java.util.concurrent.TimeUnit; |
||
10 | |||
11 | public class Channel implements Runnable, Serializable { |
||
12 | |||
13 | Peer peer; |
||
14 | |||
15 | MulticastSocket socket;
|
||
16 | |||
17 | int port;
|
||
18 | |||
19 | InetAddress address;
|
||
20 | |||
21 | |||
22 | public Channel(String address, int port, Peer peer) throws IOException { |
||
23 | |||
24 | this.port = port;
|
||
25 | |||
26 | try {
|
||
27 | |||
28 | this.address = InetAddress.getByName(address); |
||
29 | |||
30 | socket = new MulticastSocket(port); // sockets |
||
31 | |||
32 | socket.joinGroup(this.address);
|
||
33 | socket.setTimeToLive(1);
|
||
34 | this.peer = peer;
|
||
35 | |||
36 | } catch (UnknownHostException e) { |
||
37 | |||
38 | |||
39 | } |
||
40 | |||
41 | |||
42 | } |
||
43 | |||
44 | |||
45 | public void send(Message message) { //ou a mensagem e constrĂ³i aqui? |
||
46 | |||
47 | try {
|
||
48 | |||
49 | byte[] mes = message.messagePacket(); |
||
50 | DatagramPacket data = new DatagramPacket(mes, mes.length, this.address, this.port); |
||
51 | System.out.println("Sending " + message.getType().toString() + " Packet"); |
||
52 | socket.send(data); |
||
53 | } catch (IOException e) { |
||
54 | e.printStackTrace(); |
||
55 | } |
||
56 | |||
57 | } |
||
58 | |||
59 | |||
60 | @Override
|
||
61 | public void run() { |
||
62 | |||
63 | while (true) { |
||
64 | try {
|
||
65 | byte[] buffer = new byte[65000]; |
||
66 | DatagramPacket packet = new DatagramPacket(buffer, buffer.length); |
||
67 | |||
68 | socket.receive(packet); |
||
69 | |||
70 | //lançar thread que trabalha a mensagem
|
||
71 | |||
72 | peer.getThreadPool().execute(new WorkMessage(packet, peer));
|
||
73 | |||
74 | |||
75 | // new Thread(new WorkMessage(packet, peer)).start();
|
||
76 | |||
77 | } catch (IOException e) { |
||
78 | e.printStackTrace(); |
||
79 | } |
||
80 | |||
81 | } |
||
82 | |||
83 | } |
||
84 | |||
85 | } |