put a read timeout on the socket

This commit is contained in:
Grant Limberg 2015-05-02 18:34:47 -07:00
parent 06ab338ecc
commit 7054c365f2

View file

@ -34,6 +34,7 @@ import java.net.DatagramSocket;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.net.ServerSocket; import java.net.ServerSocket;
import java.net.SocketException; import java.net.SocketException;
import java.net.SocketTimeoutException;
import com.zerotier.sdk.Event; import com.zerotier.sdk.Event;
import com.zerotier.sdk.EventListener; import com.zerotier.sdk.EventListener;
@ -68,14 +69,16 @@ public class OneService extends Thread implements Runnable, PacketSender,
bgtask[0] = 0; bgtask[0] = 0;
DatagramPacket p = new DatagramPacket(buffer, buffer.length); DatagramPacket p = new DatagramPacket(buffer, buffer.length);
_udpSocket.receive(p); try {
if(p.getLength() > 0) _udpSocket.receive(p);
{ if(p.getLength() > 0)
System.out.println("Got Data From: " + p.getAddress().toString() +":" + p.getPort()); {
System.out.println("Got Data From: " + p.getAddress().toString() +":" + p.getPort());
_node.processWirePacket(System.currentTimeMillis(), new InetSocketAddress(p.getAddress(), p.getPort()), 0, p.getData(), bgtask);
_nextBackgroundTaskDeadline = bgtask[0]; _node.processWirePacket(System.currentTimeMillis(), new InetSocketAddress(p.getAddress(), p.getPort()), 0, p.getData(), bgtask);
} _nextBackgroundTaskDeadline = bgtask[0];
}
} catch (SocketTimeoutException e) {}
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -90,6 +93,7 @@ public class OneService extends Thread implements Runnable, PacketSender,
try { try {
_udpSocket = new DatagramSocket(_port); _udpSocket = new DatagramSocket(_port);
_udpSocket.setSoTimeout(100);
_tcpSocket = new ServerSocket(); _tcpSocket = new ServerSocket();
_tcpSocket.bind(new InetSocketAddress("127.0.0.1", _port)); _tcpSocket.bind(new InetSocketAddress("127.0.0.1", _port));
} catch (SocketException e) { } catch (SocketException e) {
@ -114,6 +118,9 @@ public class OneService extends Thread implements Runnable, PacketSender,
@Override @Override
public void run() { public void run() {
if(_node == null)
return;
while(true) { while(true) {
try { try {