簡體   English   中英

UDP客戶端向服務器發送數據,但未收到響應

[英]UDP client sending data to server, but not receiving response

我正在創建一個可以與PC通訊的簡單Android應用。 在我的計算機上,我有一個非常簡單的Java UDP服務器。

public void run(){

    try{
        DatagramSocket serverSocket = new DatagramSocket(port);
        byte[] receiveData = new byte[8];
        byte[] sendData = new byte[8];

        while(true)
           {
              DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
              serverSocket.receive(receivePacket);
              String sentence = new String( receivePacket.getData());
              System.out.println("RECEIVED: " + sentence);
              InetAddress IPAddress = receivePacket.getAddress();
              String sendString = "polo";
              sendData = sendString.getBytes();
              DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
              serverSocket.send(sendPacket);
           }
    }catch (Exception e){
    }
}

我的Android應用程序中還有另一段簡單的代碼,它向服務器發送UDP數據包並等待響應。

public void checkServerOnline(View v) {
    try {
        int port = 46001;
        DatagramSocket clientSocket = new DatagramSocket();
        clientSocket.setSoTimeout(1800);
        InetAddress IPAddress = InetAddress.getByName(host);
        byte[] sendData = new byte[8];
        byte[] receiveData = new byte[8];
        String sentence = "marco";
        sendData = sentence.getBytes();
        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
        clientSocket.send(sendPacket);
        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
        clientSocket.receive(receivePacket);
        clientSocket.close();
    } catch (Exception e) {
    }

我遇到的問題是客戶正在等待響應。 服務器肯定正在接收字符串“ marco”,並且大概正在發送響應“ polo”,但是客戶端未接收到它。 我曾嘗試刪除客戶端上的超時,但是直到我強制關閉應用程序后,它才凍結。

誰能看到我的代碼中的錯誤? 我不明白為什么它不起作用。 我已經成功地使用相同的設置成功設置了TCP服務器和客戶端,但似乎無法執行UDP。

服務器發送到錯誤的端口。 它應該發送到接收到的數據報中的端口,而不是自己的端口。 重用請求數據報並將數據更改為響應數據是最簡單的:返回地址已經存在。

暫無
暫無

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

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