java socket服务器通信容易

问题描述 投票:0回答:1

嗨,我想编写一个简单的代码:服务器和套接字

服务器 - 启动套接字 - 想要连接服务器 - 接受它

server - 等待来自套接字套接字的命令 - 将命令写入流服务器 - 想要对流进行响应

ajsiodjasodasodsa不工作?!

这是连接到服务器的套接字

try (Socket socket = new Socket("localhost", 1234);) {
        // get the outputstream to write a command to the server as soon as it is
        // connected:
        OutputStream outputStream = socket.getOutputStream();
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
        BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
        // this is the command
        bufferedWriter.write("LISTPARTS");
        bufferedWriter.flush();

        // Now it should open a input stream to read the resonse of the server!
        InputStream inputStream = socket.getInputStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        System.out.println("\nafter creating the reader");

        String readLine;
        while ((readLine = bufferedReader.readLine()) == null) {
            System.out.println("what:" + readLine);
        }

这是服务器:

   while (true) {
            try (ServerSocket server = new ServerSocket(1234);) {

                System.out.println("wait for Client");
                Socket socket = server.accept(); // wartet bis akzeptiert
                System.out.println("Client was accepted");
                // Open input stream because server waits for a command:
                InputStream inputStream = socket.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                // wait for command
                System.out.println("wait for command");
                String readLine;
                while ((readLine = bufferedReader.readLine()) == null) {
                    System.out.println("wait for client");
                }
                System.out.println("read line:" + readLine);

                // here it should look if the command works ( this works fine  )
                if (readLine.equals("LISTPARTS")) {

                    System.out.println("Commando: listparts");
                    // for responding the server opens a writer to write the response!
                    OutputStream outputStream = socket.getOutputStream();
                    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
                    BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
                    // this method write onto the stream ( it should work normaly !)
                    circuit.dumpParts(bufferedWriter);
                    bufferedWriter.flush();

                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

这是控制台上服务器主输出的结果:

Server- Main
wait for Client
Client was accepted
wait for command

和套接字控制台的:

after creating the reader
java sockets server communication
1个回答
0
投票

这是解决方案:

while ((readLine = bufferedReader.readLine()) != null) {
                if (readLine.isEmpty()) {
                    break;
                }
                System.out.println("what:" + readLine);

            }
© www.soinside.com 2019 - 2024. All rights reserved.