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