簡體   English   中英

將數據從Android發送到Web Server2008中的udp端口

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

我想將數據(經度和緯度)發送到從我的android應用程序知道其ip和udp端口的Web服務器(Windows Server 2008)。如何執行此操作?這是示例代碼,我正在嘗試,但數據不是收到另一端

公共類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);
    }
  }

在UDP中,與TCP不同,沒有建立連接。 每個UDP數據包都自己傳輸。

我的猜測是您可以將UDP數據包發送到服務器,但是您沒有收到返回數據包。 原因是在所有家用路由器和蜂窩網絡上都使用了NAT NAT阻止傳送入站(互聯網到設備)數據包。

要測試此假設,請在同一局域網上對設備和服務器進行嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM