gpt4 book ai didi

java - 套接字输出流和输入流的问题

转载 作者:行者123 更新时间:2023-12-01 11:52:39 24 4
gpt4 key购买 nike

我正在尝试使用套接字在手机和电脑之间开发客户端-服务器连接。在开发过程中我遇到了一个问题,但还无法解决它。问题出在输出流上。我使用 ObjectoutputStream 将字符串数组发送到客户端,当我使用以下代码时它可以工作:

try
{
// отправка пакета с файлами
DataInputStream dir = new DataInputStream(conn.getInputStream());
OutputStream dos = conn.getOutputStream();
ObjectOutputStream objectOutput = new ObjectOutputStream(dos);
byte messageType = dir.readByte();
switch(messageType) {
case 1:
try {
textArea.append("\nClient sends a command: " + dir.readUTF());
objectOutput.writeObject(results);
objectOutput.close();
} catch(Exception e) {
e.printStackTrace();
}
}
dir.close();
} catch (IOException e) {
......

但是当我将 ObjectOutputStream 移动到切换器时:

try
{
// отправка пакета с файлами
DataInputStream dir = new DataInputStream(conn.getInputStream());
OutputStream dos = conn.getOutputStream();
byte messageType = dir.readByte();
switch(messageType) {
case 1:
try {
ObjectOutputStream objectOutput = new ObjectOutputStream(dos);
textArea.append("\nClient sends a command: " + dir.readUTF());
objectOutput.writeObject(results);
objectOutput.close();
} catch(Exception e) {
e.printStackTrace();
}
}
dir.close();
} catch (IOException e) {
....

我的程序卡住了。我需要这样做,因为我还需要执行其他命令,例如发送和接收文件。这个问题有什么解决办法吗?

最佳答案

我解决了一个问题。我只使用 BufferedReader & Writer,因为它也将用于传输文件。现在代码工作正常,如下所示:

// отправка пакета с файлами
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream(), ENCODING));
String messageType = br.readLine();
switch(messageType) {
case "connect": {
List<String> results = new ArrayList<String>();

File[] files = new File("C:/Tenzor_Denis/ServerFiles/").listFiles();
//If this pathname does not denote a directory, then listFiles() returns null.

for (File file : files) {
if (file.toString().endsWith(".txt")) {
results.add(file.getName());
}
}

try {
for(int i = 0; i < results.size(); i++) {
bw.write(results.get(i));
bw.newLine();
//textArea.append(" " + results.get(i));
}
textArea.append("\nClient sends a command: " + messageType);

} catch(Exception e) {
e.printStackTrace();
}
bw.close();
br.close();
}
break;
}
}

感谢大家的解答。

关于java - 套接字输出流和输入流的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28676811/

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