我需要在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端口进行调试,并比较flex正在发送的XMLSocket和我的Java Socket发送的内容,我无法找出为什么.Net Server不会将响应发送给Java套接字。
我已经尝试过使用了 DataOutputStrea,PrintWriter等......因为在最后添加新行等等。
flex文档包含:
XML消息通过全双工TCP / IP流套接字连接发送。
每条XML消息都是一个完整的XML文档,以零(0)结尾 字节。
可以通过a发送和接收无限数量的XML消息 单个XMLSocket连接。
我不知道我发送的数据和Flex客户端(有效)之间有什么区别。我假设服务器不接受我的请求,因此不发送回复。
但为什么?
解决方案:正如shaunhusain所说的那样(关键是“\ 0”):
DataOutputStream dos = new DataOutputStream(this.socket.getOutputStream());
dos.write(new String(connectionInfo+"\0").getBytes("UTF8"));
dos.flush();