0

IPを取得し、データを受信して​​リストに保存するメソッドがあります。メソッドの最後に、このリストを返します。ただし、このメソッドが呼び出されると、リストは空になります。それは本当に簡単な修正だと思います、そしてそれは私が愚かであるということです、しかし誰かが私が間違っていたところを私に指摘することができるので私はそれを二度としないでください?

public List<String> receiveDataFromOperator(){
    List<String> dataRec = new ArrayList<String>();

    try
    {

        System.out.println("Client Program");

        //Hard coded IP Address
        String ip = "146.176.226.147";

        //Hard coded port
        int port = 500;
        // Connect to the server
        Socket sock = new Socket(ip, port);

        // Create the incoming stream to read messages from
        DataInputStream network = new DataInputStream(sock.getInputStream());

        // Display our address
        System.out.println("Address: " + sock.getInetAddress());
        String line;

        // Loop until the connection closes, reading from the network
        while ((line = network.readUTF()) != null)
        {
            dataRec.add(line);


        }

        sock.close();
    }
    catch (IOException ioe)
    {


        //Test output for the arraylist size
        System.out.println(dataRec.size());


        for(int i = 0; i<dataRec.size(); i++){
            System.out.println("Line " + i + dataRec.get(i) + "\n");

        }



    }// End of catch

    return dataRec;

}//End of method
4

1 に答える 1

3

サーバーがバイナリデータを書き込んでいる場合は、機能DataOutputStream.writeUTF()するはずです。

サーバーからテキストを送信する場合は、ソケットからテキストを読み取る必要がありますBufferedReader.readLine()

ところで:IOExceptionが発生した場合、通常はそれを無視して、特に発生しなかったふりをするべきではありません。プログラムが期待どおりに動作しない場合。

于 2012-10-25T12:18:44.697 に答える