2015-04-09 4 views
-3

См. this post в коде Андрея Кожанова.Параллельные соединения с сервером

В Server.java, строка 14, метод Run():

Когда я отправить файл "A" и во время передачи файлов запуска другого клиента и отправить другой файл "B", этот последний перевод ("B ") будет блокироваться до тех пор, пока не закончится" А ".

Как реализовать параллельный приемник сервера?

Спасибо.

+0

Что ты не понимаешь? Кажется, вы не вкладываете в него достаточно усилий. Этот сайт предназначен не для того, чтобы прогуливать вас по предметам шаг за шагом, а не помогать вам получать ответы на * специфическую проблему программирования. Или покажите попытку и сообщите нам, где у вас проблемы, или сообщите нам, что у вас в настоящее время возникают проблемы. –

+0

Ты груб! моя проблема '' СПЕЦИФИЧЕСКАЯ '' не должна понимать параллелизм. Как решить «СПЕЦИФИЧЕСКИЙ» случай, когда порт занят получением данных, а другое соединение связано. Итак, спасибо @Krab за то, что он 'SPECIFIC' и дал мне решение. Еще раз спасибо за иллюстрации с некоторым кодом. Все усилия в мире - ничто перед хорошей идеей. –

+0

Я не был груб или, по крайней мере, не пытался быть. Я просто рассказывал вам, как работает сайт. [Link] (http://stackoverflow.com/help/on-topic). Существует много разных способов создания «параллельного приемника сервера». Вы должны заглядывать в него самостоятельно, попробовать, а затем опубликовать свою проблему здесь, как только вы столкнетесь с ней. Я также предлагаю проверить [link] «* Закон, как будто вы разговариваете с занятым коллегой *». Не нужно быть настолько враждебным; это заставит меня не хотеть помочь вам в будущем. CodeReview может помочь вам улучшить ваши системы. «Идея» не для чего предназначен этот сайт; его для конкретных ответов –

ответ

1

Вы можете создать новую тему для каждого нового клиента.

public class Server extends Thread { 

    ... 

    @Override 
    public void run() { 
     try { 
      ServerSocket serverSocket = new ServerSocket(PORT); 

      while (true) { 
       Socket s = serverSocket.accept(); 
       (new FileSaver(s)).start(); 

      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    ... 
} 
public class FileSaver extends Thread { 

    Socket socket; 

    public FileSaver(Socket socket) { 
     socket = socket; 
    } 

    public saveFile() { 
     // save the file here 
    }; 

    public void run() { 
     saveFile(); 
    } 

} 
+0

Хорошая идея! Благодарю. –

Смежные вопросы