Java简单客户机-服务器程序
我编写了一个简单的java代码,将消息从服务器发送到客户端,客户端应该分别显示它。 代码是 Client.javaJava简单客户机-服务器程序,java,client-server,Java,Client Server,我编写了一个简单的java代码,将消息从服务器发送到客户端,客户端应该分别显示它。 代码是 Client.java import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; public class Client { public
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws Exception {
Socket client_socket = new Socket("localhost", 1235);
BufferedReader reader = new BufferedReader(new InputStreamReader(client_socket.getInputStream()));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(client_socket.getOutputStream()));
String serverMsg = null;
while ((serverMsg = reader.readLine()) != null) {
System.out.println("Client: " + serverMsg);
}
}
}
Server.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server {
public static void main(String[] args) throws Exception {
ServerSocket server_socket;
server_socket = new ServerSocket(1235);
while (true) {
Socket mysocket = server_socket.accept();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(mysocket.getOutputStream()));
BufferedReader reader = new BufferedReader(new InputStreamReader(mysocket.getInputStream()));
writer.write("Hello omkar ");
System.out.println("data sent");
}
}
}
问题:
现在的问题是,当我运行这些代码时,我在服务器端收到了发送的消息数据,但客户端控制台是空的。请帮助我找到错误。您正在读行,但没有写行。在消息中添加行终止符,或者使用
newline()
您正在读行,但没有在写行。在消息中添加行终止符,或在服务器代码中使用newline()
而不是使用BufferedWriter,使用PrintWriter
while (true) {
Socket mysocket = server_socket.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader reader = new BufferedReader(new InputStreamReader(mysocket.getInputStream()));
out.println("Hello World!");
System.out.println("data sent");
}
这是我的系统工作。试试这个。在服务器代码中,不要使用BufferedWriter,而是使用PrintWriter
while (true) {
Socket mysocket = server_socket.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader reader = new BufferedReader(new InputStreamReader(mysocket.getInputStream()));
out.println("Hello World!");
System.out.println("data sent");
}
这是我的系统工作。试试这个。参考你所有的答案,在谷歌上搜索一下,通过在服务器类中进行以下更改,我终于运行了代码
while (true) {
Socket mysocket = server_socket.accept();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(mysocket.getOutputStream()));
BufferedReader reader = new BufferedReader(new InputStreamReader(mysocket.getInputStream()));
writer.write("Hello omkar \n");
writer.flush();
System.out.println("data sent");
}
参考您的所有答案并在google上搜索一点,通过在服务器类中进行以下更改,我终于运行了代码
while (true) {
Socket mysocket = server_socket.accept();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(mysocket.getOutputStream()));
BufferedReader reader = new BufferedReader(new InputStreamReader(mysocket.getInputStream()));
writer.write("Hello omkar \n");
writer.flush();
System.out.println("data sent");
}
还需要对这种现象进行解释。@somprabhsharma抱歉,但我问题的主要焦点是为什么此代码不起作用。您的回答将帮助我执行此代码,但我想找出原因(解释)。还需要对这种现象进行解释。@somprabhsharma抱歉,但我问题的主要焦点是为什么此代码不起作用。您的回答将帮助我执行此代码,但我想找出原因(解释)。