在Android示例中的udp

时间:2015-02-16 19:32:06

标签: java android udp

我使用以下代码在两个Android设备之间发送文本消息,但我无法在接收方侧收到数据包 发件人:

   String messageStr="Hello Android!";
          Log.d("note","message prepaered");
          int server_port = 12345;
          try{
              Log.d("note","socket prepaered");
          DatagramSocket s = new DatagramSocket();
              Log.d("note","socket defined");
          InetAddress local = InetAddress.getByName(ip.getText().toString());
          int msg_length=messageStr.length();
          byte[] message = messageStr.getBytes();
              Log.d("note","converting message to bytes");
          DatagramPacket p = new DatagramPacket(message, msg_length,local,server_port);
          s.send(p);
              Log.d("note","sending msg");}
          catch (SocketException e){
              Log.d("error",e.getMessage());
          }
          catch(IOException v1){
              Log.d("error", v1.getMessage());
          } 

接收者:

 String text;
          int server_port = 12345;
          byte[] message = new byte[1500];
          try{
          DatagramPacket p = new DatagramPacket(message, message.length);
              Log.d("note","putting msg in packet");
          DatagramSocket s = new DatagramSocket(server_port);
              Log.d("note","defining socket");
          s.receive(p);
              Log.d("note","recieving packet");
          text = new String(message, 0, p.getLength());
          msg.setText(text);
          s.close();
          }
          catch (SocketException e){
              Log.d("error",e.getMessage());
          }
          catch(IOException v1){
              Log.d("error", v1.getMessage());
          }

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

确定。你的故事中有很多未定义的变量。 首先,您应该在本地计算机上尝试此操作,您可以确定这不是网络问题。 其次,尝试将接收代码包装在无限循环中,这将使调试更容易。 如果到现在为止,您发现您的代码实际上在本地主机上工作, 您应检查设备上的网络配置,确保使用正确的地址,并且两个设备都在同一网络中。

如果您无法在本地主机上运行代码,请尝试在工作软件上独立测试您的服务器和客户端,例如http://sourceforge.net/projects/sockettest/,它将允许您确保您的客户端和服务器代码正在运作

也不要忘记时间,先启动你的接收器。

P.S。请正确格式化您的代码。