有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么readLine()会导致InputStreamReader出现未定义的错误?

我正在用Java创建一个简单的IRC客户端。尝试使用BufferedReader中包装的InputStreamReader从服务器读取数据流时遇到问题。我发现的示例都使用readLine()方法来捕获数据。然而,当我使用这种方法时,我收到了以下错误:

readLine() is undefined for the type InputStreamReader

错误首先出现在我的while循环中。以下是代码:

public class IRCClient {

    //Initialize the input and output streams
    private Socket socket               = null;
    private InputStreamReader reader    = null; //What we receive from the host
    private OutputStreamWriter writer   = null; //What we send to the host

        //Client constructor
    public IRCClient(String address, int port, String nick, String login, String channel) {

        //Establish a connection to the host
        try
        {
            socket = new Socket(address, port);

            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(socket.getOutputStream()));

            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(socket.getInputStream()));
        }
        catch(UnknownHostException u)
        {
            System.out.println(u);
        }
        catch(IOException i)
        {
            System.out.println(i);
        }

        //Login to the host
        try
        {
            writer.write("NICK " + nick + "\r\n");
            writer.write("USER " + login + "\r\n");
            writer.flush();
        }
        catch(IOException i)
        {
            System.out.println(i);
        }

        //Read lines from the server to make sure we are connected
        String line = null;
        try
        {
            while ((line = reader.readLine()) != null) {

                if (line.indexOf("004") >= 0) {
                    // We are logged in
                    break;
                } else if (line.indexOf("433") >= 0) {
                    System.out.println("Nickname is already in use");
                    return;
                }
            }
        } catch (IOException i) {
            System.out.println(i);
        }

        // Join the specified channel
        writer.write("JOIN " + channel + "\r\n");
        writer.flush();

        // Keep reading lines from the host.
        while ((line = reader.read()) != null) {
            if (line.toLowerCase().startsWith("PING ")) {
                //Respond with PONG tro avoid being disconnected
                writer.write("PONG " + line.substring(5) + "\r\n");
                writer.flush();
            }
            else {
                //Print the line received
                System.out.println(line);
            }
        } //end while
    }

    //Instantiate the client object
    public static void main(String[] args){

        //Connection details
        String serverAddress    = "irc.chat.twitch.tv";
        int serverPort      = 6667;
        String nick         = args[0];
        String login        = args[1];
        String channel      = args[2];

        IRCClient client = new IRCClient(serverAddress, serverPort, nick, login, channel);
    } //end main

} //end class

共 (0) 个答案