1
2
3
4
5
6 package org.sourceforge.jvb3d.Network;
7
8 import java.io.ByteArrayOutputStream;
9 import java.io.IOException;
10 import java.io.ObjectOutputStream;
11 import java.net.DatagramPacket;
12 import java.net.DatagramSocket;
13 import java.net.InetAddress;
14
15 /***
16 * @author Łukasz Krzyżak
17 *
18 * Klasa odpowiada za wysłanie pakietu na docelowy adres i port przez protokół UDP
19 */
20 public class NetworkSender {
21 private ObjectOutputStream objectOutputStream = null;
22 private ByteArrayOutputStream byteArrayOutputStream = null;
23 private DatagramSocket sendSocket = null;
24
25 /***
26 * tworzy nowy obiekt sendera - przygotowuje bufory do wysyłania
27 */
28 public NetworkSender() {
29 sendSocket = NetworkReceiver.listeningSocket;
30 }
31
32 /***
33 * wysyła pakiet na podany adres i podany port
34 * @param packet pakiet do wysłania
35 * @param target adres docelowy
36 * @param port port, na który należy wysłać wiadomość
37 * @throws IOException jeśli wystąpi błąd przy przesyłaniu
38 */
39 public synchronized void send(Packet packet, InetAddress target, int port) throws IOException {
40 byteArrayOutputStream = new ByteArrayOutputStream();
41 objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
42 objectOutputStream.writeObject(packet);
43
44 DatagramPacket sendPacket = new DatagramPacket(byteArrayOutputStream.toByteArray(),
45 byteArrayOutputStream.size(), target, port);
46 sendSocket.send(sendPacket);
47 }
48 }