客户端的 java 客户端-服务器问题(无 System.out)

标签 java eclipse console client-server client

可能是个菜鸟问题:

所以我做了一个非常简单的单线程服务器/客户端模型。现在,当我在 Eclipse IDE 中执行该程序时,它会显示服务器的 System.out,而不是客户端的 System.out。 当我按下终止键时,本应由客户端生成的 System.out.println 行出现。

我已经为此苦苦挣扎了好几天......希望有人能帮助我。

提前致谢!

服务器:

import java.net.*;
import java.io.*;

public class Server {

public static void main(String[] args)
{
    new Server();

}

public Server()
{
    try
    {
        ServerSocket serverSocket = new ServerSocket(8000); //nieuw instantie van een ServerSocket

        System.out.println("Waiting for clients..");
        Socket socket = serverSocket.accept(); // lister for socket requests      



        while(true)
        {
            BufferedReader inputClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            DataOutputStream clientOutput = new DataOutputStream(socket.getOutputStream());

            String clientInput = inputClient.readLine();

            System.out.println("Server: clientInput= : " + clientInput);

            InetAddress hostAddress = InetAddress.getByName(clientInput);
            String iPaddress = hostAddress.getHostAddress();

            System.out.println("Server: IP = : " + iPaddress);

            clientOutput.writeBytes(iPaddress);
            clientOutput.flush();

        }

    }
    catch(IOException ex)
    {
        System.err.println(ex);
    }   
}
}

客户:

import java.io.*;
import java.net.*;


public class Client {

public static void main(String[] args) {

    new Client();   
}

public Client()
{
    try
    {
        Socket socket = new Socket("localhost", 8000);

        DataOutputStream toServer  = new DataOutputStream(socket.getOutputStream());   
        BufferedReader fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        toServer.writeBytes("google.com" + '\n');

        String ip = fromServer.readLine();
        System.out.println("Client: "+ ip);


    }

    catch(IOException ex)
    {
        System.err.println(ex);
    }
}

}

最佳答案

当您启动客户端服务器程序时,它们将有2个独立的控制台。在 Eclipse 的“控制台” View 中一次只能看到一个。这就是为什么您只能看到服务器的原因。

您可以使用“显示所选控制台”图标(它是一个监视器图标)在 Activity 控制台之间切换,还可以查看 Activity 控制台列表。

您还有全双工连接。客户端和服务器都可以读/写。您使用 DataOutputStream - BufferedReader 表示进行单向通信,这是错误的。

DataOutputStream 写入二进制数据,BufferedReader 读取文本(字符)数据。

您应该使用以下配对之一:

DataOutputStream - DataInputStream    and use writeUTF() and readUTF() methods
OR
PrintWriter      - BufferedReader     and use println() and readLine() methods

关于客户端的 java 客户端-服务器问题(无 System.out),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25865469/

相关文章:

windows - 为什么我的 Qt 4.5 应用程序在 Windows 下打开一个控制台窗口?

java - 如何JBOSS部署ESAPI属性文件目录配置

java - 带有 ActiveJDBC 的原始 SQL

java - 如何计算 JTextPane 的实际高度和长度

java - 在 Java 中查找用户主目录的最佳方法是什么?

eclipse - Maven 在保存时构建

python - 从 python 运行时,Docker 图像给我 "executable file not found in $PATH"

python - 防止 Python 中的编码错误

java - 如何抑制Java类实例上的静态方法?

java - Eclipse调试空指针异常