gpt4 book ai didi

Java套接字编程头

转载 作者:行者123 更新时间:2023-12-02 08:32:44 25 4
gpt4 key购买 nike

我正在尝试通过 java 套接字发送文件并通过另一个套接字接收它。然而,这种情况发生了:

发送内容:

/*这只是一个要传输的文件*/

已收到:

所以基本上我无法转义堆栈溢出时收到的内容。它基本上是一堆不可读的字节(大约 32 个字节),然后是我发送的消息。

OutputStream os = sock.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(mybytearray);
oos.flush();
oos.close();

对于客户来说:

BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
FileOutputStream fos = new FileOutputStream("newfile.java");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray,0,mybytearray.length);
current = bytesRead;
bos.write(mybytearray, 0 , current);
bos.flush();
bos.close();
sock.close();

最佳答案

为什么要通过ObjectOutputStream?可以直接通过 write 方法使用 OutputStream,也可以选择例如 DataOutputStream(如果您认为有必要)。

此外,您不应使用 Reader 类来传输二进制数据。来自 Reader 的 api:

Abstract class for reading character streams.

<小时/>

完整的“通过套接字发送文件”示例可以在这里找到:

Transfer a file via Socket .

关键服务器端代码:

  OutputStream os = sock.getOutputStream();
System.out.println("Sending...");
os.write(mybytearray,0,mybytearray.length);
os.flush();
sock.close();

关键客户端代码:

bytesRead = is.read(mybytearray,0,mybytearray.length);

关于Java套接字编程头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2887116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com