Project

General

Profile

Statistics
| Revision:

root / DistributedBackupService / src / sockets / Socket.java

History | View | Annotate | Download (1.66 KB)

1 1 up20130859
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package sockets;
7
8
import utils.Utils;
9
10
import java.io.IOException;
11
import java.net.DatagramPacket;
12
import java.net.InetAddress;
13
import java.net.MulticastSocket;
14
15
import server.Peer;
16
17
public class Socket implements Runnable {
18
19
        protected int port;
20
        protected MulticastSocket socket;
21
        protected InetAddress address;
22
        protected Peer peer;
23
24
        public Socket(Peer peer, String address, String port) {
25
                this.peer = peer;
26
27
                try {
28
                        this.address = InetAddress.getByName(address);
29
                        this.port = Integer.parseInt(port);
30
                } catch (IOException e) {
31
                        e.printStackTrace();
32
                }
33
        }
34
35
        private void openSocket() {
36
                try{
37
                        socket = new MulticastSocket(port);
38
                        socket.setTimeToLive(1);
39
                        socket.joinGroup(address);
40
                } catch (IOException e){
41
                        e.printStackTrace();
42
                }
43
        }
44
45
        public MulticastSocket getSocket() {
46
                return socket;
47
        }
48
49
        @Override
50
        public void run() {
51
                openSocket();
52
                byte[] buffer = new byte[Utils.PACKET_SIZE];
53
54
                DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
55
56
                while(true) {
57
                        try {
58
                                this.socket.receive(packet);
59
                        }
60
                        catch(IOException e) {
61
                                e.printStackTrace();
62
                        }
63
                        try {
64
                                peer.pushMsgHandler(packet.getData(), packet.getLength());
65
                        } catch(IOException e) {
66
                                e.printStackTrace();
67
                        }
68
69
                }
70
        }
71
72
        public void sendMsg(byte[] msg) {
73
                DatagramPacket packet = new DatagramPacket(msg, msg.length, address, port);
74
                try {
75
                        socket.send(packet);
76
                } catch (IOException e) {
77
                        e.printStackTrace();
78
                }
79
        }
80
81
    public enum SocketType {
82
        MC, MDB, MDR
83
    }
84
}