Java 读取和写入标准流不工作

标签 java sockets input output irc

代码:

elaur@colossus[~]$ cat irc.java
import java.net.*;
import java.io.*;

class irc
{
    static Socket server;
    static BufferedReader in;
    static BufferedReader stdin;
    static PrintWriter out;

    public static void main(String args[])
    {
            String user_line;
            try
            {
                    server = new Socket(args[0], 6667);
                    in = new BufferedReader( newInputStreamReader(server.getInputStream()) );
                    stdin = new BufferedReader( newInputStreamReader(System.in) );
                    out = new PrintWriter(server.getOutputStream());
            }
            catch (UnknownHostException e) {}
            catch (IOException e) {}
            irc_in input = new irc_in(server, out, stdin);
            Thread t = new Thread(input);
            t.run();
            while (true)
            {
                    try {
                            System.out.println(in.readLine());
                            System.out.flush();
                            Thread.sleep(2000);
                    } catch (IOException e) {}
                      catch (InterruptedException e) {}
            }
    }
}

class irc_in implements Runnable
{
    static Socket server;
    static PrintWriter out;
    static BufferedReader stdin;

    irc_in(Socket a, PrintWriter b, BufferedReader c)
    {
            server = a;
            out = b;
            stdin = c;
    }

    public void run()
    {
            String user_line;
            while (true)
            {
                    try
                    {
                            Thread.sleep(1000);
                            user_line = stdin.readLine();
                            System.out.println("Got: " + user_line);
                            out.println(user_line);
                            out.flush();
                    }
                    catch (IOException e) {}
                    catch (InterruptedException e) {}
            }
    }
}

我可以发送输入,但无法在屏幕上获得任何输出。有什么想法吗?

最佳答案

这可能是问题之一。 我相信您没有创建线程,因为您正在调用线程类对象上的 run 方法而不是 start 方法:

    t.run();

你应该打电话:

        t.start();

实际创建一个线程,因为调用 run 方法只会以顺序方式运行该方法。

关于Java 读取和写入标准流不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18214109/

相关文章:

function - Postgresql:将输入键/值对转储到 PL/pgSQL 中的字符串变量中

python - 通过尖括号参数访问加载的文件

Java/Android : how to get full date string for user language and country?

java - 如何禁用 swt 表中的水平滚动条?

Java套接字编程: How to send <STX>string-data<ETX> over TCP connection to the server?

java - 嵌入式 jetty 的多个实例

c - tcp 套接字读取调用如何永远不会返回

c - 套接字的文件描述符不起作用

html - 如何根据标签字体大小调整输入单选框/复选框的大小?

Java HTTPComponents SOAP 请求,SSLHandshake 异常(PKIX 路径构建失败)