Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java简单客户机-服务器程序_Java_Client Server - Fatal编程技术网

Java简单客户机-服务器程序

Java简单客户机-服务器程序,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

我编写了一个简单的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 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抱歉,但我问题的主要焦点是为什么此代码不起作用。您的回答将帮助我执行此代码,但我想找出原因(解释)。