日期:2014-05-20  浏览次数:20631 次

java客户端与C#服务端socket通信
服务端已经写好不能改。报文格式也定了。
由于java的byte型和c#的byte范围不一样,导致我发送的某些数据服务端接受到的格式有错。
而且out.write(char[] ch)这个方法,虽然java的char范围和c#的byte一样,但是,发送的时候好像客户端还是会先转成byte[]再发送,这样数据还是不对。
比如我的校验位是ch[0]=127。这发送没问题,服务器收到的也是127.但如果ch[0]=129,超过了byte的最大128,就会先拆分,这样服务器收到的变成了[194,129]。报文整个就不对了。
怎么解决这个问题呢,刚接触socket变成,很多东西不懂,求指导。

------解决方案--------------------
贴代码吧。你没说清楚。虽然能猜出来基本问题在哪里。你写数据的时候写的不是字节流,而是字符串(或者字符流)。

另外还是你的协议描述的太差了。基本没任何参考价值。好一点的描述能让人据此写出实现。而我连你的数据是文本数据还是结构化数据都看不出来。