我无法从一个客户端获取消息以显示给另一个客户端

问题描述

我正在尝试使用多线程服务器在 Java 中实现聊天,但无法从一个客户端获取消息以显示给另一个客户端。

这是我当前的 Server 和 ClientHandler。

import org.junit.Test;

import java.io.*;
import java.net.*;


public class Server {
    private ServerSocket serverSocket;

    public void start(int port){
        try{
            serverSocket = new ServerSocket(port);
            while (true) {
                new EchoClientHandler(serverSocket.accept()).start();
            }
        }catch(IOException e){
            e.printstacktrace();
            System.exit(1);
        }
    }

    public void stop(){
        try {
            serverSocket.close();
        }catch(IOException e){
            e.printstacktrace();
            System.exit(1);
        }
    }

    private static class EchoClientHandler extends Thread{
        private Socket clientSocket;
        private PrintWriter out;
        private BufferedReader in;

        public EchoClientHandler(Socket socket){
            this.clientSocket = socket;
        }

        public void run(){
            try {
                out = new PrintWriter(clientSocket.getoutputStream(),true);
                in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

                String inputLine;
                while((inputLine=in.readLine())!=null){
                    System.out.println("Client: "+inputLine);
                    out.println(inputLine);
                    //out.flush();
                    if(".".equals(inputLine)){
                        break;
                    }
                }

                in.close();
                out.close();
                clientSocket.close();
            }catch(IOException e){
                e.printstacktrace();
                System.exit(1);
            }
        }
    }

    public static void main(String args[]){
        Server server = new Server();
        server.start(6666);
        server.stop();
    }
}

这是我的客户。

import java.net.*;
import java.io.*;
import java.util.*;
public class Client {
    private Socket clientSocket;
    private PrintWriter out;
    private BufferedReader in;

    public void startConnection(String ip,int port){
        try {
            clientSocket = new Socket(ip,port);
            out = new PrintWriter(clientSocket.getoutputStream());
            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        }catch(IOException e){
            e.printstacktrace();
            System.exit(1);
        }
    }

    public void sendMessage(String msg){

            out.println(msg);
            out.flush();

    }

    public void readMessage(){
        String msg;
        try{
            while((msg=in.readLine())!=null){
                System.out.println(msg);
            }
        }catch(IOException e){
            e.printstacktrace();
            System.exit(1);
        }
    }

    public void stopConnection(){
        try {
            in.close();
            out.close();
            clientSocket.close();
        }catch(IOException e){
            e.printstacktrace();
            System.exit(1);
        }
    }

    public static void main(String args[]){
        Client client = new Client();
        Scanner scn=new Scanner(system.in);
        client.startConnection("localhost",6666);
        System.out.println("Eingabe: ");
        Thread sendMessage = new Thread(new Runnable(){
                @Override
                public void run(){
                    String str = "";
                    while(str!=null) {
                        str = scn.nextLine();
                        client.sendMessage(str);
                    }
                }
            }
        );
        Thread readMessage = new Thread(new Runnable(){
            @Override
            public void run(){
              client.readMessage();
            }
        });

        readMessage.start();
        sendMessage.start();
    }
}

感谢您的帮助,因为我已经尝试了好几个小时才能找到问题,但一直找不到。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)