2011-10-08 259 views
1

我想發送數據(經度和緯度)到一個web服務器(windows server 2008)誰的ip和udp端口從我的android應用程序中知道如何做所以? 這裏是我嘗試,但數據未接收到另一端的示例代碼從android發送數據到udp端口在web server2008

公共類UDPServer延伸活動{

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); 
    } 
    } 

回答

0

在UDP,TCP不同,沒有建立。每一個UDP連接數據包自行運行。

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

要測試這個假設,請在同一本地網絡上對設備和服務器進行測試。

相關問題