Я пытаюсь разработать клиент-серверное соединение между телефоном и ПК с помощью сокетов. Во время разработки я столкнулся с проблемой и не смог ее исправить. Проблема связана с выходным потоком. Я использую 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) {
....
моя программа зависает. Мне нужно сделать так, потому что мне также нужно выполнять другие команды, такие как отправка и получение файлов. Любые решения этой проблемы?
Мне нужно написать сервер, который мог бы отправлять, получать файлы и получать список файлов. Из-за этого я думаю, что я мог бы использовать «переключатель» для различных команд. Но теперь я вижу, что мне нужно инициализировать ввод и вывод перед коммутатором, и это проблема. Теперь я застрял –