Соединить сокет xml с сокетом Java xml - PullRequest
0 голосов
/ 12 марта 2012

Мне нужно сделать клиент на Java, который имеет ту же функцию, что и клиент, реализованный с помощью Flex. Во Flex клиент отправляет следующие данные, используя XMLSocket.send:

<ConnectionInfo hubId="a0sjdas09dj-222"/>

Сервер .Net получает и отвечает.

Я пытаюсь сделать то же самое с Java, выполнив следующее:

    String connectionInfo = "<ConnectionInfo hubId=\""+hubId+"\"/>";
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(this.socket.getOutputStream()));
    writer.write(connectionInfo+"\n");
    writer.flush();

Проблема в реализации Java, я никогда не получаю ответ от сервера.

Я отлаживал, просматривая порты tcp и сравнивая, что отправляет XMLSocket в flex и что отправляет мой сокет Java, и я не могу понять, почему .Net Server не отправляет ответ на Java-сокет.

Я уже пробовал использовать DataOutputStrea, PrintWriter и другие ... из-за таких вещей, как добавление новых строк в конец и т. Д.

Гибкая документация имеет:

XML-сообщения отправляются через полнодуплексное сокетное соединение TCP / IP.

Каждое сообщение XML является полным документом XML, оканчивающимся нулем (0) байт.

Неограниченное количество сообщений XML может быть отправлено и получено через одиночное соединение XMLSocket.

Я не понимаю, в чем разница между данными, которые я отправляю, и клиентом Flex (который работает). Я предполагаю, что Сервер не принимает мой запрос и поэтому не отправляет ответ.

Но почему?

Решение: как сказал Шонхусейн, нужно сделать (ключ "\ 0"):

DataOutputStream dos = new DataOutputStream(this.socket.getOutputStream());
dos.write(new String(connectionInfo+"\0").getBytes("UTF8"));
dos.flush();
...