有 Java 编程相关的问题?

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

sockets Java聊天应用程序只接收一些发送的消息

我正在编写一个集所有功能于一体的java聊天程序,它既可以充当客户端,也可以充当服务器。我目前遇到这个问题,在连接建立后,程序只成功接收(或发送?)其中一些信息。我使用了一个循环来发送垃圾邮件,通过一堆垃圾邮件,我看到另一端只会接收一些邮件。我从未收到过手动发送的消息。 以下是代码:

public class ConnectionThread implements Runnable {

private Connection c = Connection.getInstance();
private ChatInterface chatInterface;
private static ConnectionThread serverThread;
private ServerSocket serverSocket;
private Socket socket;
private ObjectInputStream dataIn;
private ObjectOutputStream dataOut;

public ConnectionThread() {}

public static synchronized ConnectionThread getInstance() {
    if (serverThread == null) {
        serverThread = new ConnectionThread();
    }
    return serverThread;
}

public void run() {
    // If the programs role is server, set up the server
    if (c.getRole() == ConnectionRole.SERVER) {
        try {
            setupServer();
            waitForConnection();
            setupStreams();
        } catch (IOException e) {
            e.printStackTrace();
        }
        do {
            try {
                chatInterface.addToChatHistory(dataIn.readUTF());
            } catch (IOException e) {
                e.printStackTrace();
            }
        } while (c.getRole() == ConnectionRole.SERVER);
    }
    // If the programs role is client, set up a connection to the server
    if (c.getRole() == ConnectionRole.CLIENT) {
        try {
            setupClient();
            setupStreams();
        } catch (IOException e) {
            e.printStackTrace();
        }
        do {
            try {
                chatInterface.addToChatHistory(dataIn.readUTF());
            } catch (IOException e) {
                e.printStackTrace();
            }
        } while (c.getRole() == ConnectionRole.CLIENT);
    }
}

private void setupClient() throws IOException {
    System.out.println("ATTEMPTING TO CONNECT...");
    socket = new Socket("127.0.0.1", 8080);
    System.out.println("CONNECTED!");
}

private void setupServer() throws IOException {
    System.out.println("SETTING UP SERVER..");
    serverSocket = new ServerSocket(8080, 1);
    System.out.println("SERVER SETUP");
}

private void waitForConnection() throws IOException {
    System.out.println("WAITING FOR A CONNECTION...");
    socket = serverSocket.accept();
    System.out.println("CONNECTION RECIEVED");
}

private void setupStreams() throws IOException {
    System.out.println("SETTING UP STREAMS...");
    dataOut = new ObjectOutputStream(socket.getOutputStream());
    dataIn = new ObjectInputStream(socket.getInputStream());
    chatInterface = ChatInterface.getInstance();
    System.out.println("STREAMS SETUP");
}

public void sendMessage(String message) throws IOException {
    System.out.println("SENDING MESSAGE...");
    dataOut.writeUTF(message);
    chatInterface.addToChatHistory(message);
    System.out.println("MESSAGE SENT!");
}
}

有人能告诉我为什么没有正确发送/接收所有消息吗?我已经玩了很长时间了,我不知道为什么


共 (0) 个答案