0

java udpプログラミングからは、クライアントに応答するサーバーが検出されないことを除いて、すべてが正常に機能しています。つまり、サーバーへのデータの送信は正常であり、サーバーはデータを受信して​​クライアントに応答します。問題は、データがクライアントに受信されないことです。使用しているローカルポートは501サーバーです。リスニングポートは500です。データを500にサーバーに送信し、クライアントの501で接続を待機します。コードはこれを説明することができます:これは受信スレッドです..どこがうまくいかないのかわからない!私はオンラインサーバーを使用していることに注意してください。

String myipAddress = "10.100.69.174";
String SendingIp = "108.163.180.54";
String sendinPort = "500";
String myRecievePortNo="501";

public void run() 
    {
        try {

             recievingSocket = new DatagramSocket(Integer.parseInt(myRecievePortNo), InetAddress.getByName(myipAddress));
            while (true) 
            {

                byte[] data = new byte[1024];
                DatagramPacket recievingPacket = new DatagramPacket(data, data.length);
                recievingSocket.receive(recievingPacket);
                String mydata = new String(data, 0, data.length);
                 System.out.printf("Hello recieve"+mydata);
                }
            }
        } 
        catch (Exception EX) 
        {
            JOptionPane.showMessageDialog(null, "Error Message" + EX, "Error", JOptionPane.ERROR_MESSAGE);
        }

    }






//this section is call when user click the send button
public void sendData(String toServer) {
    try
    {
        DatagramSocket sendingSocket = new DatagramSocket(Integer.parseInt(myRecievePortNo));
        byte[] data = toServer.getBytes();
        DatagramPacket sendingPacket = new DatagramPacket(data, data.length, InetAddress.getByName(SendingIp), Integer.parseInt(sendinPort));
        sendingSocket.send(sendingPacket);
        sendingSocket.close();
    }
    catch (Exception EX) 
    {
        JOptionPane.showMessageDialog(null, "Sending Error :" + EX, "Error", JOptionPane.ERROR_MESSAGE);
    }


}
4

1 に答える 1

0

両方のソケットを 501 にバインドし、500 に送信しています。クライアントの送信ポートはサーバーの受信ポートですが、変数のペアが 1 つしかないために混乱しています。これを 2 つのクラスに分けます。

于 2012-07-23T02:08:32.793 に答える