java - 通过套接字传输字节数组

标签 java arrays sockets byte

我正在尝试在客户端-服务器体系结构中使用 Socket 发送一个简单的字节数组。使用 Netbeans 进行调试也存在问题,因为它给出:

SocketException: connection reset

所以我在我的代码下面发布,我真的很希望有人帮助我。

客户:

public class TestClient {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    try {
        Socket s = new Socket("127.0.0.1", 3242);     

        byte[] b;
        b = "Hello".getBytes();
        DataOutputStream os = new DataOutputStream(s.getOutputStream());
        os.write(b);
    } catch (Exception e) {
        e.printStackTrace();
    }


}

}

服务器:

public class TestServer {

public static void main(String[] args) {
    try {

        byte[] b = new byte[5];
        Socket s = new ServerSocket(3242).accept();
        DataInputStream is = new DataInputStream(s.getInputStream());
        is.read(b);
        System.out.println(String.valueOf(b));
    } catch (Exception e) {
        e.printStackTrace();
    }        
}

}

我尝试简单地使用InputStream和OutputStream,但行为是相同的。

运行上面代码的结果是:

[B@25154f

感谢您的关注。

最佳答案

尝试替换这个

System.out.println(String.valueOf(b));

这样:

System.out.println(new String(b));

这将使用默认编码将字节数组转换为String。如果服务器和客户端都使用相同的默认编码,它将起作用,否则您将需要在双方指定编码,如下所示:

TestClient"Hello".getBytes(encoding)

TestServerSystem.out.println(new String(b,encoding))

关于java - 通过套接字传输字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37530340/

相关文章:

java - 如何在 Hibernate 拦截器中获取 Hibernate session ?

java - 如何在 liferay 中读取文本文件?

java - 我如何告诉程序向对象添加新字段?

java - 循环无法识别先前定义的变量

java - 在 Java 中将 vector 作为参数发送

c 中的客户端服务器 - 较大文件的文件传输问题

java - 使用 mockito 捕获方法引用

javascript - 如何在java脚本中声明未知大小的用户定义对象数组

c - libev ev_io_stop() 不关闭套接字

sockets - 消息队列与套接字