gpt4 book ai didi

java - 如何停止DataInputStream获取byte[]?

转载 作者:行者123 更新时间:2023-12-01 11:07:02 27 4
gpt4 key购买 nike

我想使用套接字读取和写入 byte[] 数据,但无法停止流。

这是我的服务器:

public class Server {
public static void main(String[] args) throws IOException {
System.out.println("Welcome to Server side");
DataInputStream in;
DataOutputStream out;

ServerSocket servers = null;
Socket fromclient = null;

// create server socket
try {
servers = new ServerSocket(4444);
} catch (IOException e) {
System.out.println("Couldn't listen to port 4444");
System.exit(-1);
}

try {
System.out.print("Waiting for a client...");
fromclient = servers.accept();
System.out.println("Client connected");
} catch (IOException e) {
System.out.println("Can't accept");
System.exit(-1);
}

in = new DataInputStream(fromclient.getInputStream());
out = new DataOutputStream(fromclient.getOutputStream());
String input = "", output;

System.out.println("Wait for messages");

byte[] bytes = new byte[16*1024];

int count;
while ((count = in.read(bytes)) > 0) {
byte[] mass = "some data".getBytes("UTF-8");
out.write(mass, 0, count);
System.out.println(Arrays.toString(bytes));
}

out.close();
in.close();
fromclient.close();
servers.close();
}
}

当我从客户端接收数据时,它会打开一个不会停止的无限流。

我怎样才能停止这个DataInputStream

最佳答案

从客户端(或服务器端)关闭连接。只要连接打开,服务器就会等待数据发送。

在正确的设置中,您将拥有一个定义良好的协议(protocol),其中可以包含关闭消息,以便在客户端决定断开连接时通知服务器。简单地关闭连接是实现这一目标的“原始”方式,但它不是很优雅。

关于java - 如何停止DataInputStream获取byte[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32841100/

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