15 package com.neuronrobotics.sdk.network;
17 import java.io.DataInputStream;
18 import java.io.DataOutputStream;
19 import java.io.IOException;
20 import java.net.DatagramPacket;
21 import java.net.DatagramSocket;
22 import java.net.InetAddress;
23 import java.net.SocketException;
24 import java.net.SocketTimeoutException;
25 import java.net.UnknownHostException;
26 import java.util.ArrayList;
28 import com.neuronrobotics.sdk.commands.bcs.core.PingCommand;
29 import com.neuronrobotics.sdk.common.BowlerAbstractConnection;
30 import com.neuronrobotics.sdk.common.BowlerDatagram;
31 import com.neuronrobotics.sdk.common.BowlerDatagramFactory;
32 import com.neuronrobotics.sdk.common.ByteList;
33 import com.neuronrobotics.sdk.common.Log;
34 import com.neuronrobotics.sdk.common.MACAddress;
53 private ArrayList<InetAddress>
addrs=
null;
115 public DataInputStream
getDataIns() throws NullPointerException{
116 new RuntimeException(
"This method should not be called").printStackTrace();
127 public DataOutputStream
getDataOuts() throws NullPointerException{
128 new RuntimeException(
"This method should not be called").printStackTrace();
139 public void write(
byte[] data)
throws IOException {
143 DatagramPacket sendPacket =
new DatagramPacket(data, data.length,
IPAddressSet,
port);
150 byte[] receiveData=
new byte[4096];
153 DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
161 long start = System.currentTimeMillis();
165 start = System.currentTimeMillis();
167 udpSock.receive(receivePacket);
169 }
catch(SocketTimeoutException ste){
171 }
catch(Exception ex){
174 ex.printStackTrace();
178 start = System.currentTimeMillis();
181 addrs=
new ArrayList<InetAddress>();
184 byte [] data = receivePacket.getData();
186 for (
int i=0;i<receivePacket.getLength();i++){
187 bytesToPacketBuffer.add(data[i]);
190 start = System.currentTimeMillis();
207 IPAddressSet=InetAddress.getByAddress(
new byte[]{(byte) 255,(
byte) 255,(byte) 255,(
byte) 255});
208 }
catch (UnknownHostException e1) {
210 e1.printStackTrace();
216 throw new RuntimeException(
"UDP Connection failed");
237 Log.
info(
"already connected..");
242 udpSock =
new DatagramSocket();
245 }
catch (Exception e) {
287 addrs=
new ArrayList<InetAddress>();
292 ping.setUpstream(
false);
297 try {Thread.sleep(3000);}
catch (InterruptedException e) {}
298 }
catch (IOException e) {
313 if(in.getHostAddress().contains(address)) {
319 throw new RuntimeException(
"Unknown address");
void setChunkSize(int chunkSize)
void setLastWrite(long lastWrite)
void setSynchronusPacketTimeoutTime(int sleepTime)
synchronized void setConnected(boolean c)
boolean ping(MACAddress mac)
static void info(String message)
static void error(String message)
ArrayList< InetAddress > getAllAddresses()
ArrayList< InetAddress > addrs
UDPBowlerConnection(InetAddress set)
boolean waitingForConnection()
void setAddress(InetAddress set)
void setAddress(String address)
UDPBowlerConnection(InetAddress set, int port)
UDPBowlerConnection(int port)
DataInputStream getDataIns()
DataOutputStream getDataOuts()
BowlerDatagram loadPacketFromPhy(ByteList bytesToPacketBuffer)