简体   繁体   English

将数据从Android发送到Web Server2008中的udp端口

[英]send data from android to a udp port in web server2008

i want to send data(latitude and longitude )to a web server (windows server 2008) who"s ip and udp port is known from my android application .how to do so ? here is a sample code which im trying but data is not received to other end 我想将数据(经度和纬度)发送到从我的android应用程序知道其ip和udp端口的Web服务器(Windows Server 2008)。如何执行此操作?这是示例代码,我正在尝试,但数据不是收到另一端

public class UDPServer extends Activity { 公共类UDPServer扩展Activity {

 WebView  view;

 @Override

  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState) ;


    setContentView(R.layout.main);

    view=(WebView) findViewById(R.id.webView1);

     try {
        String serverHostname = new String ("ip and udp port");

   BufferedReader inFromUser = 

    new BufferedReader(new InputStreamReader(System.in)); 

      DatagramSocket clientSocket = new DatagramSocket(); 

      InetAddress IPAddress = InetAddress.getByName(serverHostname); 

     System.out.println ("Attemping to connect to " + IPAddress + 
                          ") via UDP port 7777");

      byte[] sendData = new byte[1024]; 
      byte[] receiveData = new byte[1024]; 

      System.out.print("Enter Message: ");

     String sentence = inFromUser.readLine(); 
      sendData = sentence.getBytes();         

   Log.i("send","send");

      System.out.println ("Sending data to " + sendData.length + 
                          " bytes to server.");
      DatagramPacket sendPacket = 

       new DatagramPacket(sendData, sendData.length, IPAddress,7777); 

      clientSocket.send(sendPacket); 

      DatagramPacket receivePacket = 

   new DatagramPacket(receiveData, receiveData.length); 

      System.out.println ("Waiting for return packet");

   clientSocket.setSoTimeout(10000);

      try {
           clientSocket.receive(receivePacket); 

     String modifiedSentence = 
               new String(receivePacket.getData()); 

           InetAddress returnIPAddress = receivePacket.getAddress();

           int port = receivePacket.getPort();

           System.out.println ("From server at: " + returnIPAddress + 
                               ":" + port);
           System.out.println("Message: " + modifiedSentence); 

          }

        catch (SocketTimeoutException ste)

         {
           System.out.println ("Timeout Occurred: Packet assumed lost");
          }

      clientSocket.close(); 

  }
   catch (UnknownHostException ex) { 

 System.err.println(ex);
    }
   catch (IOException ex) {

 System.err.println(ex);
    }
  }

In UDP, unlike TCP, there is no connection established. 在UDP中,与TCP不同,没有建立连接。 Every UDP packet travels on it's own. 每个UDP数据包都自己传输。

My guess is that you can send a UDP packet to server, but you do not receive the return packet. 我的猜测是您可以将UDP数据包发送到服务器,但是您没有收到返回数据包。 The reason for this is NAT which is used on all home routers and cellular networks. 原因是在所有家用路由器和蜂窝网络上都使用了NAT NAT prevents delivery of inbound (internet to device) packets. NAT阻止传送入站(互联网到设备)数据包。

To test this assumption, try this with device and server on the same local network. 要测试此假设,请在同一局域网上对设备和服务器进行尝试。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM