I am not sure if my question is right...@@
(complete source code: https://github.com/oNaiPs/droid-VNC-server)
I run the source code in the above link on Windows XP, Eclipse AVD(API level 14), and it failed at the step to start the sever.
While I am tracing the code in debug mode, I got an exception on this code
public static boolean isServerRunning() {
try {
byte[] receiveData = new byte[1024];
DatagramSocket clientSocket = new DatagramSocket();
InetAddress addr = InetAddress.getLocalHost();
clientSocket.setSoTimeout(100);
String toSend = "~PING|";
byte[] buffer = toSend.getBytes();
DatagramPacket question = new DatagramPacket(buffer, buffer.length,
addr, 13132);
clientSocket.send(question);
DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
clientSocket.receive(receivePacket);
String receivedString = new String(receivePacket.getData());
receivedString = receivedString.substring(0, receivePacket
.getLength());
return receivedString.equals("~PONG|");
} catch (Exception e) {
return false;
}
}
when it run to this line "clientSocket.receive(receivePacket);"
it goes to "catch (Exception e)"
The content of variable e is
e: SocketTimeOutException (id=830027971416)
bytes Transferred 0
+cause ErrorException (id=830029535888)
detailMessage null
+stackState (id=830027970928)
stackTrace null
+suppressedExceptions ArrayList(id=830027971456)
Now I know its an exception cause by the sever didn't answer on time.(Thanks for Class Stacker). So I comment this line "clientSocket.setSoTimeout(100);" to waited a long time and find out it still stuck.
I don't know if there should be some device connected when running the AVD, or it can just run on the AVD only.
I look the variable "clientSocket", it's subcontent "address" got a null and the "port" got a -1 after this line "clientSocket.send(question);". Is this a correct result? (I read the explanation of the class on the android package website, but remain not understand. http://developer.android.com/reference/java/net/DatagramSocket.html)