Несколько выходов на сокете - PullRequest
0 голосов
/ 02 февраля 2012

Я пытаюсь использовать поток сокетов для нескольких передач данных.

  • для отправки List<>
  • для отправки текста
  • ...

Могу ли я использовать только один сокет для отправки String, который сообщает клиенту, какие данные следует ожидать, за которыми следуют ожидаемые данные (в данном случае List<>)?

Вот то, о чем я думал:

//declarations
//outputs and inputs
    private ObjectInputStream input;
    private ObjectOutputStream output;
    private OutputStream checkStatus;
    private PrintWriter out;
    ...
    private void forwardMessage(List<User> clients) throws IOException {
        checkStatus = client.getOutputStream();
        out = new PrintWriter(new OutputStreamWriter(checkStatus), true);
        out.println("Command Option 1");    
        client.shutdownOutput();
        output = new ObjectOutputStream (client.getOutputStream());
        for (int i = 0; i < clients.size(); i++) {      
            output.flush();
            output.writeObject(clients.get(i));
            output.flush();
            output.reset();
        }
        output.writeObject(null);
        client.shutdownOutput();
    }

Ошибка, выдаваемая при попытке это, "java.net.SocketException: Socket is closed"

Я также пытался закрыть OutputStream, но это даеттот же результат.

Как я могу использовать только один потоковый сокет для нескольких передач данных?

1 Ответ

0 голосов
/ 03 февраля 2012

Если вы пытаетесь отправить эти данные по сети, это может помочь:

http://systembash.com/content/a-simple-java-udp-server-and-udp-client/

тогда, когда дело доходит до обнаружения данных, вы всегда можете сделать что-то вроде этого:

if(name_of_your_string.compare("what_you_are_looking_for")){ //what you want to do with "what_you_are_looking_for" }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...