我想使用UDP套接字在Android的,在这里我把我的字符串从Android模拟器,并接收通过电脑我的Java程序,但我的Java程序不会收到任何东西,虽然当我用Java程序的客户端和服务器(我做了两个不同的Java程序),它的工作。
这是我的Android主要活动:
公共类首先扩展活动{ 按钮B; @覆盖 公共无效的onCreate(包savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.main); B =(按钮)findViewById(R.id.button1); b.setOnClickListener(新View.OnClickListener(){ 公共无效的onClick(视图v){ // TODO自动生成方法存根 线程t =新主题(新二()); t.start(); } });下面是我的第二类机器人:
公共类二实现Runnable { 第二() { 跑(); } 公共无效的run(){ // TODO自动生成方法存根 尝试 { 字符串messageStr =你好Android的!; INT SERVER_PORT = 9876; DatagramSocket的S =新的DatagramSocket(); InetAddress类本地= InetAddress.getByName(127.0.0.1); INT msg_length = messageStr.length(); byte []的消息= messageStr.getBytes(); DatagramPacket类P =新的DatagramPacket(消息,msg_length,地方, SERVER_PORT); s.send(对); }赶上(例外五){ } } }这是在PC上我的Java code:
公共静态无效的主要(字符串的args [])抛出异常 { DatagramSocket类的ServerSocket =新的DatagramSocket(9876); byte []的receiveData =新的字节[1024]; byte []的送出数据=新的字节[1024]; 而(真) { DatagramPacket类receivePacket =新的DatagramPacket(receiveData,receiveData.length); serverSocket.receive(receivePacket); 串句=新的String(receivePacket.getData(),0,receivePacket.getLength()); InetAddress类ip地址= receivePacket.getAddress(); INT端口= receivePacket.getPort(); 的System.out.println(收到消息+句子++ ip地址++端口); } }解决方案
在你的Android仿真(和Android设备),127.0.0.1意味着Android的模拟机,而不是PC主机。您可以在10.0.2.2
I am trying to use UDP sockets in a android, here I send my string from android emulator and receive that by my Java program on PC, but my Java program does not receive anything, although when I used Java program as both client and server (I made two different Java programs) it worked.
This is my android main activity :
public class First extends Activity { Button b; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); b = (Button) findViewById(R.id.button1); b.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Thread t = new Thread(new Second()); t.start(); } });Here is my second class in android :
public class Second implements Runnable { Second() { run(); } public void run() { // TODO Auto-generated method stub try { String messageStr = "Hello Android!"; int server_port = 9876; DatagramSocket s = new DatagramSocket(); InetAddress local = InetAddress.getByName("127.0.0.1"); int msg_length = messageStr.length(); byte[] message = messageStr.getBytes(); DatagramPacket p = new DatagramPacket(message, msg_length, local, server_port); s.send(p); } catch (Exception e) { } } }This is my Java code on PC:
public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length); serverSocket.receive(receivePacket); String sentence = new String(receivePacket.getData(),0,receivePacket.getLength()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); System.out.println("MESSAGE RECEIVED "+sentence+" "+IPAddress+" "+port); } }解决方案
On your Android emulation (and Android device), 127.0.0.1 means the Android emulation machine, not the host PC. You can access your host at 10.0.2.2
更多推荐
如何使用UDP套接字在Android的?
发布评论