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