package tr.gov.ulakbim.jDenetX.streams.net; /** * Created by IntelliJ IDEA. * User: caglar * Date: Sep 20, 2010 * Time: 1:55:55 PM * To change this template use File | Settings | File Templates. */ import java.io.ByteArrayInputStream; import java.io.IOException; import java.net.*; /** * @author caglar */ public class UDPStreamReceiver { private int PortNo = 4000; private int PacketSize = 1024; private boolean HostConstraint = false; private InetAddress RemoteAddr = null; private DatagramSocket Sock = null; private final String host = "127.0.0.1"; public UDPStreamReceiver() { } public UDPStreamReceiver(int portNo, int packetSize) { PortNo = portNo; PacketSize = packetSize; } public void putHostConstraint(InetAddress remoteAddr) { HostConstraint = true; RemoteAddr = remoteAddr; } protected String convertBinToString(byte[] data) { String sData = ""; ByteArrayInputStream bin = new ByteArrayInputStream(data); for (int i = 0; i < data.length; i++) { int iData = bin.read(); if (iData == -1) break; else sData += (char) iData; } return sData; } /* * Tries to bind to a specific host */ public void openHostSocket(int sockTimeout) throws SocketException { SocketAddress sAddress = new InetSocketAddress(host, PortNo); Sock = new DatagramSocket(sAddress); Sock.setSoTimeout(sockTimeout); } public void openSocket(int portNo, int sockTimeout) throws SocketException { PortNo = portNo; Sock = new DatagramSocket(PortNo); Sock.setSoTimeout(sockTimeout); Sock.setReuseAddress(true); } public void openSocket(int sockTimeout) throws SocketException { Sock = new DatagramSocket(PortNo); Sock.setSoTimeout(sockTimeout); Sock.setReuseAddress(true); } public void openSocket() throws SocketException { Sock = new DatagramSocket(PortNo); Sock.setReuseAddress(true); } public void closeSocket() { Sock.close(); } public boolean isSockBound() { return Sock.isBound(); } public String getPacketData(int portNo, int packetSize) throws IOException { String packData = ""; DatagramPacket packet = new DatagramPacket(new byte[packetSize], packetSize); if (Sock == null) { throw new NullPointerException("getPacketData: Socket can not be null!"); } Sock.receive(packet); InetAddress remote_addr = packet.getAddress(); if (HostConstraint) { if (remote_addr == RemoteAddr) { packData = convertBinToString(packet.getData()); } } else { packData = convertBinToString(packet.getData()); } return packData; } public String getPacketData() throws IOException { String packData = ""; if (Sock == null) { throw new NullPointerException("getPacketData: Socket can not be null!"); } DatagramPacket packet = new DatagramPacket(new byte[PacketSize], PacketSize); if (Sock.isBound()) { Sock.receive(packet); } InetAddress remote_addr = packet.getAddress(); if (HostConstraint) { if (remote_addr == RemoteAddr) { packData = convertBinToString(packet.getData()); } } else { packData = convertBinToString(packet.getData()); } return packData; } }