我需要在Java中创建一个与使用Flex实现的客户端具有相同功能的客户端。
在Flex中,客户端使用XMLSocket.send发送以下数据:
.Net服务器接收并作出响应。
我正在尝试通过执行以下操作来对Java执行相同的操作:
String connectionInfo = "";
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 messages are sent over a full-duplex TCP/IP stream socket connection.
Each XML message is a complete XML document, terminated by a zero (0)
byte.
An unlimited number of XML messages can be sent and received over a
single XMLSocket connection.
我没有得到我发送的数据和Flex客户端(哪个有效)之间的区别。我假设服务器不接受我的请求,因此不会发送回复。
但为什么?
解决方案:shaunhusain说需要做的(关键是“\ 0”):
DataOutputStream dos = new DataOutputStream(this.socket.getOutputStream());
dos.write(new String(connectionInfo+"\0").getBytes("UTF8"));
dos.flush();