java socket readline 阻塞问题!在线坐等 高悬赏 ,求大神!!!

客户端发送了一个图片转成的用BASE64编码成的字符串,在接收的时候老是只能接收到图片的第一行字符这个要怎么解决,网上找了好久,加什么换行符,可是图片转成的数据也不好加呀... 客户端发送了一个图片转成的用BASE64编码成的字符串,在接收的时候老是只能接收到图片的第一行字符 这个要怎么解决,网上找了好久,加什么换行符,可是图片转成的数据也不好加呀?
客户端发送
socket.connect(isa, 3000);
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8")),true);
out.println(sendMsg); //这里的sendMsg为图片转成的字符串,用BASE64编码 形成了很多行的字符串
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
String mstr= null;
mstr = in.readLine();
returnMsg = mstr;
out.close();
in.close();
socket.close();

服务端
Socket socket = serversocket.accept();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(socket.getInputStream(),"UTF-8"));
// 读取数据
String mstr= null;
String mstr2 = null;
mstr2 = buffer.readLine(); //这里读到了图片的第一行数据
System.out.println("mstr2 = " + mstr2);
while(mstr2 != null){
if(mstr == null)
mstr = mstr2;
else
mstr = mstr + mstr2;
if(mstr.length() >5 && !mstr.subSequence(0,5).equals("IMAGE")) break;

mstr2 = buffer.readLine(); ///这里进入了阻塞!!!!只读到了图片的第一行数据
}
String msg = mstr;
// String msg = buffer.readLine();
System.out.println("---->收到客户端请求信息:\r\n" + msg);
System.out.println("---->进入数据处理阶段!");
//进入数据处理阶段DealData
展开
 我来答
少侠就要显神通
2015-04-28 · 超过22用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:32.5万
展开全部
额,,我想说你这二进制文件非得整成string的目的是什么?你的string是以/n还是/r/n结尾你都难以控制吧,真是醉了。用二进制字符串比这有效的多

out.println(sendMsg); 只传过来一行,你想读几行?当然会阻塞,等你继续传呢。

还是不建议你这样做,虽然怎么做是你的事。。。
更多追问追答
追问

把图片转成了字符串 转换之后好像自带换行符了

我用System.out.println(sendMsg);

都是下面这样的,,这样读不了吗??

本来服务端就一个readLine的,但是就读了一行的数据就改成上面那样了

追答
看起来是不行,不要粗暴的使用string,很多字符它是不认识的,二进制文件就用二进制字符流读取,没必要用string,多行整合时多个/r什么的,图片可能会受影响
xy007man
2015-04-28 · TA获得超过1584个赞
知道小有建树答主
回答量:389
采纳率:100%
帮助的人:134万
展开全部
你这个代码不完善呀,能不能发送一份完整的代码呀,另一个把一个二进制图片转换为BASE64编码意义何在?
追问
可以直接传吗??我新手 瞎弄的,,其实有其他的字符串和图片转的字符串拼接起来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式