正在用JAVA写一段连接MSN服务器的代码,但是发现怎么给MSN服务器发送命令消息,结果都只有一个,那就是没有响应,随后Socket连接被关闭。
发送消息的代码如下:
public void send(String cmd)
{
try{
DataOutputStream dos = new DataOutputStream(sock_.getOutputStream());
dos.writeUTF(cmd);
}catch(Exception ex)
{
System.out.println("MSNPConnection::send fail, " + ex.getMessage());
}
}
刚开始以为给服务器发送的命令格式错了,于是把所有发送的数据包都截下来分析。在截包中发现一个奇怪的现象,在我发送的每个命令前都多出了两个字节,而且很明显是一个数字,于是开始领悟,莫非是writeUTF在其中搞怪?
翻开JDK的文档,直接搜索writeUTF函数的说明,发现以下文字:
发送消息的代码如下:
public void send(String cmd)
{
try{
DataOutputStream dos = new DataOutputStream(sock_.getOutputStream());
dos.writeUTF(cmd);
}catch(Exception ex)
{
System.out.println("MSNPConnection::send fail, " + ex.getMessage());
}
}
刚开始以为给服务器发送的命令格式错了,于是把所有发送的数据包都截下来分析。在截包中发现一个奇怪的现象,在我发送的每个命令前都多出了两个字节,而且很明显是一个数字,于是开始领悟,莫非是writeUTF在其中搞怪?
翻开JDK的文档,直接搜索writeUTF函数的说明,发现以下文字:
writeUTF
public void writeUTF(String str) throws