vc写的客户端不能跟java写的客户端正确通信的问题!!
不知道是什么原因。
但是用我自己用java写的服务器却没问题,同样用它用vc写的客户端也没问题。
因为客户端要用javaapplet,所以不得不用不同的语言写了。
那位有本事解决吗?
谢谢
问题点数:0、回复次数:9Top
1 楼aspkiller(IT浪子)回复于 2004-07-04 16:18:28 得分 0
更正:是vc写的服务器端Top
2 楼masterz(www.fruitfruit.com)回复于 2004-07-04 18:24:14 得分 0
java byte order is different from windows byte order.
Top
3 楼aspkiller(IT浪子)回复于 2004-07-04 19:51:26 得分 0
那怎么办?有解决的办法没有?Top
4 楼masterz(www.fruitfruit.com)回复于 2004-07-04 21:25:03 得分 0
自己定好byte order,把int,short转换为byte数组,在客户端和服务端按同样的byte order组装起来比如下面的代码是java从vc客户端读入int
public int readLength() throws Exception
{
byte[] b = new byte[4];
input.read(b);
int nret = 0;
for (int i = b.length - 1; i >= 0; i--)
{
nret = nret * 256 + b[i];
}
return nret;
}Top
5 楼aspkiller(IT浪子)回复于 2004-07-05 07:12:48 得分 0
可是服务器端经常能收到数据,可就是服务器经常不知道什么时候传送结束Top
6 楼Semigod()回复于 2004-07-05 08:51:42 得分 0
字节顺序是最大的问题。我写过这种程序。在Java客户端中,类似int形的数据输出一般都要InverseBytes(),这个函数要你自己写。Top
7 楼ShaftWhy(归去来兮)回复于 2004-07-05 09:42:54 得分 0
关于byte order,只要在两端都用htonl和htons,应该没有什么问题吧?
或者用BCD编码好了。Top
8 楼aspkiller(IT浪子)回复于 2004-07-05 11:27:59 得分 0
楼上什么意思啊?用RCD编码?是不是先编成BCD然后传送?那解码呢?Top
9 楼skyMountain(天山)回复于 2004-07-05 12:50:04 得分 0
不光要注意字节顺序问题,还有一点请注意:JAVA中,字符的默认大小是两个字节的,而C的字符大小是一个字节。比方说,java中String str("aaa"),其长度为六,你如果直接把这个String发送给C,那么结果当然不正确了。Top




