Java ServerSocket已连接到客户端套接字…但服务器未接收ClientSocket的OutputStream…并且编译器未显示任何错误

Java ServerSocket已连接到客户端套接字…但服务器未接收ClientSocket的OutputStream…并且编译器未显示任何错误,java,sockets,bufferedreader,readline,Java,Sockets,Bufferedreader,Readline,我正在用java制作一个简单的聊天程序……我在客户端代码中找不到源问题……我还用另一个聊天客户端测试了服务器,它正在工作……但我的客户端不工作……聊天程序非常简单……客户端发送字符串,服务器接收并发送回所有客户端,客户端显示它在传入文本区域中 服务器显示它已连接到我的客户端套接字…但当我发送字符串时,它没有接收到它…我无法找到问题 它正在与其他聊天客户端协同工作 import java.net.*; import java.io.*; import java.awt.*; import java

我正在用java制作一个简单的聊天程序……我在客户端代码中找不到源问题……我还用另一个聊天客户端测试了服务器,它正在工作……但我的客户端不工作……聊天程序非常简单……客户端发送字符串,服务器接收并发送回所有客户端,客户端显示它在传入文本区域中

服务器显示它已连接到我的客户端套接字…但当我发送字符串时,它没有接收到它…我无法找到问题

它正在与其他聊天客户端协同工作

import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class chatbox {

    JFrame fr = new JFrame("Chat");
    JPanel pnl = new JPanel();
    JPanel pnl2 = new JPanel();
    JScrollPane scrl;
    JTextArea tarea;
    JTextField fld;
    JLabel lb;
    JLabel lbchat;
    JButton btn;

    Socket socket;
    PrintWriter writer;
    BufferedReader reader;

    btnListener BL = new btnListener();

    void guibuilder() {
        fr.setSize(400, 400);
        fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fr.setVisible(true);

        fld = new JTextField(20);
        lb = new JLabel("Message :");
        lbchat = new JLabel("Chat Box");

        tarea = new JTextArea(400, 500);
        tarea.setLineWrap(true);
        scrl = new JScrollPane(tarea);

        btn = new JButton("Send");
        btn.addActionListener(BL);

        pnl.add(lb);
        pnl.add(fld);
        pnl.add(btn);
        pnl2.add(lbchat);
        pnl2.add(scrl);

        fr.getContentPane().add(BorderLayout.SOUTH, pnl);
        fr.getContentPane().add(BorderLayout.CENTER, pnl2);

        setUpNet();
        Thread readerThread = new Thread(new SR());
        readerThread.start();

    }

    void setUpNet() {
        try {
            socket = new Socket("127.0.0.1", 5000);
            InputStreamReader streamReader = new InputStreamReader(socket.getInputStream());
            writer = new PrintWriter(socket.getOutputStream());
            reader = new BufferedReader(streamReader);
            System.out.println("networking established");
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }

    }

    class btnListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {

            try {

                writer.print(fld.getText());
                writer.flush();

            }
            catch (Exception ex) {
                ex.printStackTrace();
            }

            fld.setText("");
            fld.requestFocus();

        }
    }//inner class end  

    class SR implements Runnable {

        public void run() {
            String message;

            try {
                while ((message = reader.readLine()) != null) {
                    System.out.println("read" + message);
                    tarea.append(message + "\n");
                }

            }
            catch (Exception ex) {
                ex.printStackTrace();
            }

        }
    }//inner class end

}

public class test {

    public static void main(String[] arg) {
        chatbox c = new chatbox();
        c.guibuilder();

    }
}
信用:用户207421


我使用的是PrintWriter流的print()而不是println()。由于服务器正在使用BufferedReader的readLine(),print()无法工作。

您正在使用
readLine()
读取行,但是您没有使用
print()
写入行。使用
println()。但是为什么print()不起作用。呃,因为我已经说过了?@user207421…我的意思是,print()也会写入字符串行。println()只在下一行写入字符串…为什么服务器的bufferedReader甚至不读取一行字符串。