急! socket 客户端接收大于10K的数据,接收不完整

banditgao banditgao 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我对socket不熟悉,但是这个事挺急,请各位帮我看看。谢谢了啊 ,分不够再加!!!

socket 向服务端请求数据,返回的数据如果小于10K,那么能看到xml的整个完整的格式如下:
<?xml version="1.0" encoding="GBK"?>
<root>
<header>
<name>
....
</name>
.....
</header>
</root>

如果大于10K,XML就不完整了,解析出来少了一部分,反正看不到结尾的</root>节点.... 换成循环读取貌似也是一样。。客户端代码如下:




public String buildSocket4Sync(SocketConn sm, HostVO address, String cmd)
{
BufferedReader br = null;
InputStream in = null;
String result = "";
try
{
socket = new Socket(address.getIp(), address.getPort());
OutputStream socketOut = socket.getOutputStream();
socketOut.write(cmd.getBytes());
socketOut.write("\r\n".getBytes());

in = socket.getInputStream();
br = new BufferedReader(new InputStreamReader(in, "utf-8"));
String re;
StringBuffer sbf = new StringBuffer();
while ((re = br.readLine()) != null)
{
sbf.append(re);
}

if (sbf.length() != 0)
{
result = new String(Base64.decode(sbf.toString()), "utf-8");
// System.out.println(result);

}

}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (null != br)
{
br.close();
}
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
return result;
}



急啊,感谢感谢!
...全文

相关推荐

评论 17
收藏 已收藏
分享
返回顶部
banditgao
Java SE 62,620 成员 307,251 内容