2011-02-18 64 views
4

我有一個局域網,我想從我的android(htc慾望)發送更新消息到我的電腦。這是他們之間的一個Wlan路由器。問題是,UPD消息從未到達PC。在Android:從ANDROID 2.2發送UDP包(HTC願望)

package org.example.androidapp; 

import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 

public class UDPClientAnd { 

    public void sendUDPMessage(int port) throws java.io.IOException { 
     DatagramSocket socket = new DatagramSocket(); 
     InetAddress serverIP = InetAddress.getByName("192.168.1.110"); 
     byte[] outData = ("Ping").getBytes(); 
     DatagramPacket out = new DatagramPacket(outData,outData.length, serverIP,50005); 
     socket.send(out); 
     socket.close(); 
    } 

} 

代碼我選擇在展臺邊的高端口。

對Android的權限是:

uses-permission android:name="android.permission.INTERNET" 
uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" 

服務器端是PC只是一個簡單的PROGRAMM用於接收:

package org.example.androidapp; 

import java.io.IOException; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 
import java.net.SocketException; 

public class UPDServerAnd implements Runnable{ 
public void run(){ 
byte[] inData = new byte[48]; 
byte[] outData = new byte[48]; 
String message; 
DatagramSocket socket; 
try { 
    socket = new DatagramSocket(50005); 
    while (true) { 
     DatagramPacket in = new DatagramPacket(inData,inData.length); 
     socket.receive(in); 
     InetAddress senderIP = in.getAddress(); 
     int senderPort = in.getPort(); 
     message=new String(in.getData(),0,in.getLength()); 
     System.out.println("Got "+message+" from "+senderIP+","+senderPort); 
     outData = "Pong".getBytes(); 
     DatagramPacket out = new DatagramPacket(outData,outData.length, senderIP,senderPort); 
     socket.send(out); 
     } 
} catch (SocketException e) { 
    e.printStackTrace(); 
} 
catch (IOException e) { 
    e.printStackTrace(); 
} 

} 

} 

那麼爲什麼沒有UDP包可見來自Android的未來?即使Wireshark只顯示一些ARP包。 Plz幫助:)

+2

你的android代碼適合我。檢查您的PC上是否沒有防火牆,IP地址是否正確以及您的WiFi接入點上的客戶端 - 客戶端通信是否被禁用。 – ldx 2011-02-18 15:20:36

回答

1

我有一個非常類似的問題。我的解決方案是添加:

uses-permission android:name="android.permission.INTERNET" 
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" 
uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" 

Manifest.xml文件。然後我禁用了所有Windows firewall,它工作。我能夠從我的Droid發送String到PC。