加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 从ANDROID 2.2发送UDP包(HTC欲望)

发布时间:2020-12-15 02:23:51 所属栏目:Java 来源:网络整理
导读:我有一个局域网,我想从我的机器人(HTC欲望)发送一条更新消息到我的电脑.他们之间有一个Wlan路由器.问题是,UPD消息永远不会到达PC. Android上的代码: package org.example.androidapp;import java.net.DatagramPacket;import java.net.DatagramSocket;import
我有一个局域网,我想从我的机器人(HTC欲望)发送一条更新消息到我的电脑.他们之间有一个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"

服务器端是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(),in.getLength());
        System.out.println("Got "+message+" from "+senderIP+","+senderPort);
        outData = "Pong".getBytes();
        DatagramPacket out = new DatagramPacket(outData,senderIP,senderPort);
        socket.send(out);
        }
} catch (SocketException e) {
    e.printStackTrace();
} 
 catch (IOException e) {
    e.printStackTrace();
}

}

}

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

解决方法

我遇到了一个非常类似的问题.我的解决方案是添加:

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防火墙,它工作正常.我能够从我的Droid发送一个字符串到PC.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读