首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >套接字发送和接收字节数组

套接字发送和接收字节数组
EN

Stack Overflow用户
提问于 2009-07-24 07:01:07
回答 3查看 151.1K关注 0票数 28

在服务器端,我通过Java套接字向客户端发送了一个字节数组

代码语言:javascript
复制
byte[] message = ... ;

DataOutputStream dout = new DataOutputStream(client.getOutputStream());
dout.write(message);

如何从客户端接收此字节数组?

EN

回答 3

Stack Overflow用户

发布于 2009-07-24 07:09:43

首先,除非确实必要,否则不要使用DataOutputStream。第二:

代码语言:javascript
复制
Socket socket = new Socket("host", port);
OutputStream socketOutputStream = socket.getOutputStream();
socketOutputStream.write(message);

当然,这缺少任何错误检查,但这应该可以让您继续工作。JDK API Javadoc是您的朋友,可以为您提供很多帮助。

票数 10
EN

Stack Overflow用户

发布于 2009-07-24 10:15:54

有一个JDK套接字教程here,它涵盖了服务器端和客户端。这看起来就是你想要的。

(来自该教程)设置为从回显服务器读取:

代码语言:javascript
复制
    echoSocket = new Socket("taranis", 7);
    out = new PrintWriter(echoSocket.getOutputStream(), true);
    in = new BufferedReader(new InputStreamReader(
                                echoSocket.getInputStream()));

通过阅读器获取字节流并转换为字符串,并使用默认编码(通常不建议)。

上面省略了错误处理和关闭套接字/流,但请查看教程。

票数 2
EN

Stack Overflow用户

发布于 2012-12-24 15:00:14

您需要使邮件具有固定的大小,或者需要发送该大小,或者需要使用一些分隔符。

对于已知大小(100字节),这是最简单的情况:

代码语言:javascript
复制
in = new DataInputStream(server.getInputStream());
byte[] message = new byte[100]; // the well known size
in.readFully(message);

在这种情况下,因为DataInputStream提供了readFully(),所以它是有意义的。如果您不使用它,您需要自己循环,直到读取了预期的字节数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1176135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档