急急急!windows访问Linux服务器的时候,返回的报文少了数据。

mishi198725 2009-07-30 12:00:37
public byte[] processInput(InputStream inputstream) throws IOException
{

int len = 0;
BufferedReader in = new BufferedReader(new InputStreamReader(inputstream));
byte[] buf = new byte[10000];
buf = in.readLine().getBytes();
len = buf.length;
byte[] ret = new byte[len];
System.arraycopy(buf, 0, ret, 0, len);
return ret;
}

这段代码运行到buf = in.readLine().getBytes();的时候就不能再往下运行了。
byte[] buf = new byte[10000];
len = inputstream.read(buf);
byte[] ret = new byte[len];
System.arraycopy(buf, 0, ret, 0, len);
return ret;
换成这行代码。就没有问题了。
但这是在本机上运行的。本机的环境是windows。
把程序布署到Linux服务器上。本机(windows环境)访问的时候。返回的字符串会少了数据。
...全文
143 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mishi198725 2009-07-31
  • 打赏
  • 举报
回复
http://www.javaeye.com/topic/176777#499426
OK了。谢谢大家。
mishi198725 2009-07-31
  • 打赏
  • 举报
回复
readLine() 在本机上都是不能运行通过的。但是把这个方法单独拿出来。却是能够运行并得到数据的。(虽然不是完全数据)。
能运行的是:
public byte[] processInput(InputStream inputstream) throws IOException
{
int len = 0;
byte[] buf = new byte[10000];
len = inputstream.read(buf);
byte[] ret = new byte[len];
System.arraycopy(buf, 0, ret, 0, len);
return ret;
}
运行的是这个方法。
为什么在本机上运行的时候。能得到全部的返回报文。但是放在服务器上。却会丢失一部分的报文。


mishi198725 2009-07-30
  • 打赏
  • 举报
回复
没有返回
mishi198725 2009-07-30
  • 打赏
  • 举报
回复
还是不行。
bigbug9002 2009-07-30
  • 打赏
  • 举报
回复
public byte[] processInput(InputStream inputstream) throws IOException {  
int len=inputstream.available();
byte[] buff=new byte[len];
inputsteam.read(buff);
return buff;
}
bigbug9002 2009-07-30
  • 打赏
  • 举报
回复
你是想一次性把流中的内容全部读完?
mishi198725 2009-07-30
  • 打赏
  • 举报
回复
还是不行啊。
bigbug9002 2009-07-30
  • 打赏
  • 举报
回复
public byte[] processInput(InputStream inputstream) throws IOException { 
BufferedReader in = new BufferedReader(new InputStreamReader(inputstream));
String line=null;
if((line=in.readLine())!=null){
return line.getBytes();
}else{
return null;
}
}


这样试试
lovecj6185 2009-07-30
  • 打赏
  • 举报
回复
因为你用的是readLine()
windows下面的换行符是CRLF
linux的是LF
所以多了吧

mishi198725 2009-07-30
  • 打赏
  • 举报
回复
不是上面的这个问题。麻烦请问有谁知道的啊?
mishi198725 2009-07-30
  • 打赏
  • 举报
回复
还有一种可能。就是说。当在访问服务器的时候。本来服务器出来的报文就已经不对了。少了数据。所以返回到我的机器上的时候不可能会有全的数据。
bigbug9002 2009-07-30
  • 打赏
  • 举报
回复
意料之中,没有蒙对。
mishi198725 2009-07-30
  • 打赏
  • 举报
回复
单一来执行是没有问题的。只是放到Linux服务器上就有问题了。从本机访问了。返回的大概1460位。少了20位左右。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧