【问题标题】:Application chat Client Server - cant send the second message应用程序聊天客户端服务器 - 无法发送第二条消息
【发布时间】:2021-03-23 21:42:01
【问题描述】:

我正在编写一个客户端-服务器聊天应用程序。我可以连接它们,我可以发送-接收第一条消息。但是我不能发送第二个。我尝试添加 do...while() 语句以进行重复,但它不起作用。有人可以帮我解决这个问题吗?非常感谢 这是我的服务器类

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class server {

    public static void main(String[] args) throws IOException {
    
        ServerSocket server = new ServerSocket(4999);
        Socket serverSocket = server.accept();
        
        System.out.println("client is connected");

        String messIn = "", messOut = "";

        InputStreamReader serverInput = new InputStreamReader(serverSocket.getInputStream());
        
        BufferedReader serverBufIn = new BufferedReader(serverInput);

        Scanner serverScanner = new Scanner(System.in);

        PrintWriter serverWriter = new PrintWriter(serverSocket.getOutputStream());

        do {
            messIn = serverBufIn.readLine();
            System.out.println("client : " + messIn);
            messOut = serverScanner.nextLine();
            serverWriter.print(messOut);
            serverWriter.flush();

        } while (messOut.equals("quit"));

        serverSocket.close();
        serverWriter.close();
    }
}`

This my client class

`import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

public class client {

    public static void main(String[] args) throws IOException {

        Socket clientSocket = new Socket(InetAddress.getLocalHost(), 4999);
        System.out.println("You are connected. Say something!");

        String messIn = "", messOut = "";

        InputStreamReader clientInput = new InputStreamReader(clientSocket.getInputStream());

        BufferedReader clientBufIn = new BufferedReader(clientInput);

        Scanner clientScanner = new Scanner(System.in);     

        PrintWriter clientWriter = new PrintWriter(clientSocket.getOutputStream());
        
        do {
            messOut = clientScanner.nextLine();
            clientWriter.println(messOut);
            clientWriter.flush();

            messIn = clientBufIn.readLine();
            System.out.println("server : " + messIn);

        } while (messOut.equals("quit"));
        
        clientSocket.close();
        clientWriter.close();
    }
}
`

【问题讨论】:

    标签: java sockets server client chat


    【解决方案1】:

    试试while (true) { }

    我的代码:

    public static void newSocket(int port) throws IOException {
            ServerSocket ss = new ServerSocket(port);
            while (run) {
                try {
                    final Socket socket = ss.accept();
                    new Thread() {
                        public void run() {
                            try {
                                while (true) {
                                    int i = socket.getInputStream().available();
                                    if (i > 0) {
                                        byte[] bytes = new byte[i];
                                        socket.getInputStream().read(bytes, 0, i);
                                        String s = new String(bytes);
                                        String[] split = s.split("\\|");
    
                                        if (split.length > 1) {
                                            if (split[0].equals("hello")) {
                                                String msg = split[1];
                                                System.out.println(msg);
                                                PrintStream p = new PrintStream(socket.getOutputStream());
                                                p.println("hello back");
                                            }
    
                                        }
                                    }
                                }
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }.start();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            ss.close();
        }
    

    【讨论】:

    • 嗨 4zzzz,谢谢你的回答。但我可以等待另一件简单的事情。
    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多