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包. 解决方法
我遇到了一个非常类似的问题.我的解决方案是添加:
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用HttpClient实现文件的上传下载方法
- java – 为什么消费者接受语句体而不是表达体的lambdas?
- 基于Java LinkedList,实现Android大数据缓存策略
- java – 使用来自不同类层次结构路由的两个字段进行map-fil
- java – EHCache如何检查缓存中是否存在某些内容?
- java – 为什么我可以在没有显式转换的情况下为一个char变量
- java – 写入文件,输出文件在哪里?
- json字符串与Object、List、Map的互转工具类
- Java知识点11 Hibernate多对多单向关联(Annotation+XML实现
- java – 弱引用而不是getActivity()(Android避免内存泄漏)?