Java 不能';无法从套接字输入流读取
我目前正在使用Java 不能';无法从套接字输入流读取,java,sockets,bufferedreader,printwriter,Java,Sockets,Bufferedreader,Printwriter,我目前正在使用ServerSocket和Socket以及JFrameUI编程一个聊天系统。但我正在努力从套接字流读取数据 这是我的服务器代码: ServerSocket serverSocket = new ServerSocket(PORT); Socket socket; systemStatus.append(displayStatus("Server starts on port: ") + serverSocket.getLocalPort() + "
ServerSocket
和Socket
以及JFrame
UI编程一个聊天系统。但我正在努力从套接字流读取数据
这是我的服务器代码:
ServerSocket serverSocket = new ServerSocket(PORT);
Socket socket;
systemStatus.append(displayStatus("Server starts on port: ") + serverSocket.getLocalPort() + "\n");
while (true) {
socket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
while (true) {
String line = in.readLine();
while (line != null) {
line = in.readLine();
systemStatus.append(line);
}
}
}
以及客户端的发送按钮代码:
log_regButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
String login = log_loginField.getText().trim();
String pw = log_pwordField.getText().trim();
out.write(login + "\n" + pw+"\n");
out.flush();
}
});
哪个
systemStatus
是JTextArea
。假设它在客户端框架上显示来自JTextField
的文本。但事实并非如此。有人能告诉我我做错了什么吗?它是否显示消息:“服务器在端口上启动:”?服务器代码是如何执行的?是的,它确实显示消息try do Socket.getInputStream()。读取服务器中的(字节[]),并查看是否以这种方式打印出任何内容。您可能一直在等待换行符(即使您的客户机似乎正在发送带有换行符的数据),这稍微偏离了主题,但您的服务器永远不会接受超过1个连接,这使得第一个while循环毫无意义。您是否已验证客户端确实连接到服务器?