我正在构建一个实时GPS跟踪系统,它将接收使用UDP从几个Arduino设备发送的GPS数据。我有这个代码到目前为止:通过UDP接收实时GPS数据
PreparedStatement stmt ...
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
while(true){
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String received = new String(receivePacket.getData());
System.out.println("RECEIVED: " + received);
stmt.set...
stmt.execute();
}
1 - 任何人有更多的知识可以告诉我,如果有更好的方式做到这一点?我真的不知道JVM如何处理这个问题,但我不喜欢那个无限循环。
2 - 假设我有50个Arduinos发送数据。我需要使用线程或类似的东西?
3 - 最好为每个“连接”(UDP是无连接的)使用一个线程,就像下面的答案一样,或者使用像Apache Mina或Netty这样的框架/库?
感谢您的答案。你知道什么性能最好:你的代码是线程还是基于NIO的,比如Apache Mina或Netty?我正在谈论50个或更多的连接开始。这个代码与千位连接的行为是什么? – fonini 2012-08-20 16:17:50
@fonini我会说NIO有更好的表现(这是他们做这件事的原因之一)。但是我认为NIO对于TCP来说更重要,因为您需要管理状态连接。 IIUC你只有无状态的数据报,所以这使得事情更简单,没有NIO。恕我直言,这里的问题是:(1)你想/你可以使用多个CPU吗? (2)处理个别请求需要更长的时间吗?如果是,那么我会使用线程进行处理,无论您是否使用NIO。 – 2012-08-20 19:44:50