View Javadoc

1   /*
2    * Created on 2004-12-07
3    *
4    * plik opisujący klasę odpowiedzialną za wysyłanie pakietów
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  }