当我仅发送文件名时,我试图在通过UTF将文件发送到Socket服务器之前发送一些信息:

   File fil=new File(filepath);
   dos.writeUTF (fil.getName());


它工作正常,但是当我向其中添加一些自定义字符串时:

  dos.writeUTF((("@REQUEST@ROOM:"+roomName+"@FILENAME:"+fil.getName())));


我得到这个错误:

 UTFDataFormatException: malformed input UTF Format


你能帮我吗?

最佳答案

编写时不会出现该异常。您在阅读时会得到它:通常是在调用writeUTF()时,如果writeUTF()没有产生输入中的下一件事情。换句话说,应用程序协议错误。在这种情况下,它不是由您发布的内容生成的,而是由您尚未发布的内容生成的。

我不明白为什么您不将扩展的数据写在单独的写入中,而不是在单独的读取中读取,而不是让自己麻烦级联然后再将其拆分。

我也不知道所有多余的括号都应该用作什么。不要编写冗余语法。

10-06 13:49