为了账号安全,请及时绑定邮箱和手机立即绑定

Java Socket应用---通信是这样练成的

难度初级
时长 2小时 0分
学习人数
综合评分9.77
496人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.6 逻辑清晰

最赞回答 / 欧简墨
同样的问题,已解决。原因:socket.receive(packet)会锁死对象packet(你看一下receive方法就知道),主线程锁死packet对象后,在start()的子线程中不能调用  packet.属性,packet.方法()。解决办法:while(true){     byte[] data=new byte[1024];//创建字节数组,指定接受的数据包的大小     DatagramPacket packet=new DatagramPacket(data, data.lengt...

已采纳回答 / needself
你想多了。只要你明白不管前面的还是后面的内容只要是java语言介绍的都是各种各样的面向对象的类线程类,输入输出类因为某些属性及功能而变现的封装代码而已就是一些java提供给你的类别纠结,会用就好

已采纳回答 / wangdd3
写错了  是不用关闭输入输出流 直接关闭SOCKET就可以

已采纳回答 / Creacc
因为byte是有符号的 所以值域不是0~255而是-128~127,所以比127大的数字会变成负值,你不用byte存就可以了

最新回答 / 自由的web
只能以1.25、1.75、2.0的速度来看,没有1.5那么选项

最新回答 / 卧龙绝圣
原来演示案例也是这样,好费解,求大神解答呀

+ 我来回答 回答最高可+2积分

最新回答 / 古__月
其实你在使用的是eclipse的话,它会自动提示异常的,你可以直接把异常向外抛,再到最后统一处理

最新回答 / 叶孤城_007
socket =new Socket("localhost", 8800); ois=new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));socket和ois是不是需要先指定应用类型啊 

已采纳回答 / iblur
出错信息没贴全吧。。。肯定是重复运行了服务器端

已采纳回答 / changing一铭惊人
 DatagramPacket p = new DatagramPacket(buf, buf.length);这个要放在while循环里面,因为每一次的receive()都要指定一个特有的DatagramPacket  p来接收每一个客户端发过来的请求,如果你放在外面的话,就每一次都要等上一次的数据输出后才能重新接收,这个就没有为每一个客户端各分配一个用来响应的reply了,不知道能不能帮到你!!
课程须知
本课程是 Java 开发课程的高级课程,需要对 Java 中的面向对象、IO、多线程,以及网络相关知识有一定的基础
老师告诉你能学到什么?
1、网络相关的基础知识 2、Java 中网络相关 API 的应用 3、实现基于 TCP 的 Socket 编程 4、实现基于 UDP 的 Socket 编程

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消