易截截图软件、单文件、免安装、纯绿色、仅160KB

SOLARIS 下 JAVA SOCKET 读取字节异常问题

最近在做MML接口,通过SOCKET连接,向目标主机发送命令,在SOLARIS下返回结果时,发现读取的字节被截取,只能读取前面一部分,但相同代码在WINDOWS主机下,向同一主机发送命令,返回字节正常!
读取字节代码如下:
byte[] buffer = new byte[71680];//现有长度未超过71680

int read = is.read(buffer);
String returnInfo = new String(buffer, 0, read,"GBK");
System.out.println("从服务器获得返回结果:" + returnInfo);

有搞过类似的兄弟过来顶顶啊!

缓冲大小问题吧
你没定义数据包结构吗?
先读包头的数据包长度,根据长度来读剩下的字符内容

终于找到组织了,请大哥多多提示啊,不清楚哎:(

好象以前也遇到过在UNIX操作系统中的这个问题... 就是经常出现读不完.
原因是数据是分多个包过来的, 只用一个read()只能读一个包, 下一个包可能隔个0.1秒才过来.
记得当时的解决方法是, 需要循环的读取, 每次读完之后等待0.1秒, 再看Stream中是否有数据, 如果连续等待了50次(也就是5秒都没有任何数据过来), 就认为是读完了.

恩· ·有可能,我试试·:)
谢谢大哥,不过正式环境得到晚上才能测试。

引用
好象以前也遇到过在UNIX操作系统中的这个问题... 就是经常出现读不完.
原因是数据是分多个包过来的, 只用一个read()只能读一个包, 下一个包可能隔个0.1秒才过来.
记得当时的解决方法是, 需要循环的读取, 每次读完之后等待0.1秒, 再看Stream中是否有数据, 如果连续等待了50次(也就是5秒都没有任何数据过来), 就认为是读完了.




相关问答:

java如何控制远程Linux重启

我目前在本地的linux上写了一个swing的界面,想通过这个界面来控制其它电脑的linux重启。
我知道用Runtime.getRuntime().exec("shutdown -r");可以控制本机Linux重启,但是怎么控制远程的linux重启呢? ......

关于jsp论坛 - Java / Web 开发

我现在想用ssh整合来做一个论坛,但数据库方面不行,我主要不会涉及数据库,不知道发帖表,和回帖表要如何设计和区分。不知道谁有一个简单的思路,来设计这些表。谢谢了。
发帖和回帖用同一张表 。发帖 id user ......

java日期处理 - Java / Java SE

当知道一个日期,如何把这个日期所在旬的前后两个日期取出
比如输入20090905,就输入20090901 20090910
输出20090901 20090910

取得天数后作一下判断再把这个方法用下void set(int field, int value)  
......

java的小问题 extends

public   class   Student{

//字段的定义
private   String   _number;   //学号
private   String   _name;       //姓名
private   ......

eclipse与mySQL的问题 - Java / Eclipse

在安装Java编译器的Eclipse的时候,对环境变量进行了配置,在安装MySQl的时候也要对环境变量进行配置;那么后面的配置会影响前面的Eclipse的配置吗?
请大家多指教~!谢谢!
不会把,我这都装了的 我系统里 还装了 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号