【问题标题】:Sending UDP packages from ANDROID 2.2 (HTC desire)从 ANDROID 2.2 发送 UDP 包(HTC 的愿望)
【发布时间】:2011-02-18 14:35:40
【问题描述】:

我有一个局域网,我想从我的 android(htc 愿望)向我的 PC 发送一条更新消息。它们之间有一个 Wlan 路由器。问题是,UPD 消息永远不会到达 PC。

Android 上的代码。:

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" 

Server-Side 是 PC,只是一个简单的接收程序:

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();
}

}

}

那么为什么没有可见的来自 android 的 UDP 包呢?甚至 Wireshark 也只显示一些 ARP 包。 请帮助:)

【问题讨论】:

  • 你的安卓代码对我有用。检查您的 PC 上没有某种防火墙,IP 地址正确,并且您的 wifi 接入点上没有禁用客户端-客户端通信。
  • 是的,谢谢,有一个静态 IP:/。代码现在当然适用于两者。
  • HTC Desire 的 UDP 广播有问题。

标签: java android sockets sdk udp


【解决方案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 并且它起作用了。我能够将String 从我的Droid 发送到PC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多