conexão UDP do Android, não recebendo nenhum dado
Sou novato nisso, então por favor, me escute se eu fizer perguntas idiotas.
Estou tentando fazer uma conexão UDP entre o PC Emulator do Eclipse e um telefone Android
(ou entre dois dispositivos de telefone Android).
eu tenho umroteador e o telefone se conecta à internet através da rede wifi do roteador. O PC também está na mesma rede (conexão direta entre o roteador a cabo e o PC). Estou tentando enviar alguns dados de texto do thread do servidor para thread do cliente, mas nada é recebido / enviado. :(
oServidor classe java (RE-EDITED, o servidor recebe a mensagem do cliente):
<code>public class server implements Runnable { // the Server's Port public static final int SERVERPORT = 6000; // running Server thread. public void run() { Log.d("redwing","server thread started."); DatagramSocket serverSocket = null; try { // Open Server Port serverSocket = new DatagramSocket(server.SERVERPORT); byte[] receiveData = new byte[32]; byte[] sendData = new byte[32]; // loop until "server_finished" becomes False. while(createserver.server_finished) { if(renderer.gGL!=null) // ignore me, just a null pointer checker { // waiting for the incoming client's message packet DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); renderer.recv = new String(receivePacket.getData()); Log.d("server","packet received from client, ETA " + timing.getNow() + " " + renderer.recv); // timing getNow - just returns current system minute & second. // server is replying to the client back with a message. InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); sendData = new String("server msg").getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); renderer.sent = new String(sendData, 0, sendData.length); Log.d("server","packet sent to client, ETA " + timing.getNow() + " " + renderer.sent); // timing getNow - just returns current system minute & second. } } // close the socket if(serverSocket!=null) serverSocket.close(); serverSocket = null; } catch (Exception e) { Log.e("server", "Error", e); if(serverSocket!=null) serverSocket.close(); serverSocket = null; } finally { if(serverSocket!=null) serverSocket.close(); serverSocket = null; } Log.d("redwing","server thread terminated."); } } </code>
e aCliente classe java (RE-EDITADO, Cliente não recebe msg do servidor):
<code>public class client implements Runnable { public static final int CLIENTPORT = 5000; // running Client thread. public void run() { Log.d("redwing","client thread started."); DatagramSocket clientSocket = null; try { // getting local address clientSocket = new DatagramSocket(server.SERVERPORT); InetAddress IPAddress = InetAddress.getByName("192.168.0.100"); // displaying IP & hostname. Log.d("client", "IP: " + IPAddress.getHostAddress() + " Name: " + IPAddress.getHostName()); byte[] sendData = new byte[32]; byte[] receiveData = new byte[32]; // Loop until client_finished becomes False. while(createclient.client_finished) { if(renderer.gGL!=null) // ignore me, just a null pointer checker { // sending a message to the server sendData = timing.getNow().getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, client.CLIENTPORT); clientSocket.send(sendPacket); renderer.sent = new String(sendData,0,sendData.length);; Log.d("client","packet sent to server, ETA " + timing.getNow()); // waiting for the server packet message. DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); renderer.recv = new String(receivePacket.getData()); Log.d("client","packet received from server, ETA " + timing.getNow()); } } // close the socket if(clientSocket!=null) clientSocket.close(); clientSocket = null; } catch (Exception e) { Log.e("client", "Error", e); if(clientSocket!=null) clientSocket.close(); clientSocket = null; } finally { if(clientSocket!=null) clientSocket.close(); clientSocket = null; } Log.d("redwing","client thread terminated."); } } </code>
as Permisions estão habilitadas no manifesto:
<code><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> <user-permission android:name="android.permission.NETWORK" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> </code>
Estou executando o servidor no emulador de PC android e o cliente no meu telefone android.
Ambos os encadeamentos Client & Server funcionam bem, mas ... o problema é que eu não recebo nenhum dado trocado entre eles. oo cliente não recebe nada e o servidor não recebe nada. Os pacotes são enviados, mas nada é recebido.
O que estou fazendo errado?
Por favor me ajude.
Agradeço antecipadamente.