【问题标题】:java socket server communication easyjava socket服务器通信简单
【发布时间】:2018-09-18 13:59:41
【问题描述】:

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

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

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

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

【问题讨论】:

  • bufferedWriter.write("LISTPARTS\n"); 应该有帮助
  • 请不要为您的问题添加答案,除非它们确实是答案。如果您有新信息要添加,只需编辑问题以包含更新和/或新信息(单击标签下方的编辑按钮)。如果您有新问题,请再问一个问题,如有必要,请参考此问题。

标签: java sockets server communication


【解决方案1】:

这是解决方案:

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

            }

【讨论】:

    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多