Java中Socket的OutputStreamWriter和InputStreamReader,我在做什么错?

在Java中使用Socket

public class Server {

    private static ServerSocket server;
    private static int port = 9876;
    static Socket p1 = null;
    static Socket p2 = null;

    public static void main(String args[]) throws IOException,ClassnotFoundException{
        server = new ServerSocket(port);
        Thread p1t = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    System.out.println("[Server] Waiting for connection");
                    p1 = server.accept();
                    System.out.println("[Server] Client connected");
                    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(p1.getOutputStream()));
                    BufferedReader in = new BufferedReader(new InputStreamReader(p1.getInputStream()));
                    String msg = String.valueOf(in.readLine());
                    System.out.println(msg);
                    out.write(msg);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        p1t.start();
    }

}

public class Client {
    public static void main(String[] args) throws UnknownHostException,IOException,ClassnotFoundException,InterruptedException{
        Socket socket = new Socket(Inetaddress.getLocalHost().getHostName(),9876);
        if(socket.isConnected()) {
            System.out.println("[Client] Connected");
            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while(true) {
                        try {
                            System.out.println(in.readLine());
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }).start();
            while(true) {
                Scanner s = new Scanner(System.in);
                out.write(s.nextLine());
            }
        }
    }
}

客户端应该向服务器发送消息,服务器应该将该消息转发回客户端;但是BufferedReaderClient的{​​{1}}没有读取任何已发送的内容,或者ServerBufferedWriter的{​​{1}}没有发送任何内容任何东西。

我还尝试了在两个类中都使用Client手动发送文本。

在这种情况下我怎么了?

bjkao2006 回答:Java中Socket的OutputStreamWriter和InputStreamReader,我在做什么错?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3113921.html

大家都在问