Project

General

Profile

Statistics
| Revision:

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
}