从 ANDROID 2.2 发送 UDP 包(HTC 的愿望)

Sending UDP packages from ANDROID 2.2 (HTC desire)(从 ANDROID 2.2 发送 UDP 包(HTC 的愿望))

本文介绍了从 ANDROID 2.2 发送 UDP 包(HTC 的愿望)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

i have a lan and i want to send a upd message from my android (htc desire) to my PC. Theres a Wlan Router between them. The Problem is, that the UPD message never gets to the PC.

Android 上的代码.:

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

}

我选择展位两侧的高端口.

I choose a high port on booth sides.

Android 上的权限是:

The Permissions on the Android are:

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

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

The Server-Side is the PC just a simple programm for receiving:

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 包.请帮助:)

So why is there no UDP Package visible coming from android? Even Wireshark only shows some ARP packages. Plz help :)

推荐答案

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

I was having a very similar problem. My solution was to add:

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 防火墙 并且它起作用了.我能够将 String 从我的 Droid 发送到 PC.

to the Manifest.xml file. Then I disabled all Windows firewall and it worked. I was able to send a String from my Droid to a PC.

这篇关于从 ANDROID 2.2 发送 UDP 包(HTC 的愿望)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:从 ANDROID 2.2 发送 UDP 包(HTC 的愿望)

基础教程推荐