我目前正在创建一个简单的客户端,它从主机请求时间,并打印任何响应。我对我所看到的内容感到非常困惑,因为输出是我以前从未见过的。这是我的客户端代码,
import java.io.*;
import java.net.*;
import java.util.*;
/*
*
* Time tcp client
*/
public class TimeTcp {
public final static int TIME_PORT = 37;
public final static int SIZE = 1024;
public static void main(String[] args) throws IOException {
if(args.length < 1) {
System.out.println("usage: java TimeTcp host");
System.exit(1);
}
String host = args[0];
Socket socket = new Socket(host, TIME_PORT);
DataInputStream fromServer = new DataInputStream(
socket.getInputStream());
byte[] read = new byte[SIZE];
fromServer.read(read);
System.out.println(read.toString());
}
}
但是,我的输出如下所示:[B@4e25154f
从字面上看,这就是它打印的全部内容。
我究竟做错了什么?我应该转换一些东西吗?
谢谢!
编辑:感谢 kolossus 帮助我弄清楚我在看什么。但是,我应该打印的是从我调用的时间服务器获取的时间。我试图使用字节数组来读取服务器发送回的时间内容,然后将其读入单个变量,然后将其转换为Java可以使用的值(时间服务器协议(protocol)发送32位无符号值) ,而 Java 不支持这些),以便可以将其打印回调用客户端的用户。有什么好的办法吗?
最佳答案
你在做什么(错误)
您尝试以错误的方式打印输出(byte
数组)
你所看到的
每个 java 类都有的 toString()
的默认实现。此实现打印对象的哈希码
你应该做什么
System.out.println(Arrays.toString(read));
关于java - 简单的 TCP 连接程序,我在看什么,如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26150646/