Bubble(12)

补回前天的


这天是突破最大的,也是最艰难的一天。具体流程:

Java Socket实战之二 多线程通信 - kongxx的专栏 - 博客频道 - CSDN.NET这个帖子成了突破口,里面正好有一个ObjectOutputStream的例子,也有传String的,String的代码贴到工程里完全没问题,一切正常。但是Object不行,开始debug之旅。

1.android 2.3以上的系统禁止在UI的主进程开socket或者是超过一定时间的通信吧,反正乱七八糟的。那就用2.2的模拟器,报找不到类的错误。

android socket遇到的问题 - 张兰云 - 博客园

2.公共类的名字必须完全一致,而且所在的package的名字也要一样。还要在类里面加上ID。

3.中间还遇到一个怪问题,还以为是64位机的问题后来参考这个,Internal Error (classFileParser.cpp:3075), pid=520, tid=3636 Error: ShouldNotReachHere() - wdzayyt的专栏 - 博客频道 - CSDN.NET有莫名其妙好了,怪。


就这样可以了,终于能穿object了。


试试小聪明,把例子里的server拷到我的server里,运行,然后让例子中的client去访问它,居然不行。试过各种方法,还是在readObject那里出错。

最后的解决办法很狼狈,把原server里的文件全都拷到这个例子工程下。例子Client可以访问了,我的Client还是访问不了,后来把4445端口改为10000就可以了,吐血。

再就是ois的方法稍微改了下,从ois=new ObjectInputStream(s.getInputStream());

  ois = new ObjectInputStream(new BufferedInputStream(s.getInputStream())); 


改写整个的TCPserver,从用PrintWriter,BufferedReader到ObjectInputStream.中间还遇到个bug

java.io.StreamCorruptedException: invalid type code: 4C

愿意是我用的printwrite写,用ObjectInputStream接收的。


实验的时候,模拟器很恼人,总是要卸载再重新装,不然用户就登不上,终于忍不住了,在debug模式下看看server到底有什么猫腻,发现server居然停止数据库执行完没有结果。怎么会这样?原来输入用户名的时候在后面多加了空格,空格也算字符。。。。。


server改写完了,现在client和server开始传对象了。判断语句不能写

if(m,gettype()=="Login") 而应是if(m.getType().equalsIgnoreCase("Login"))

可以登录了,开心。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值