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

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

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

已采纳回答 / qq_海贼_0
你的代码写错了,服务器端socket是由serverSocket.accept();来初始化,这样获取客户端传来的数据,除此之外你的User类还需要实现序列化接口,implements Serializable,最好把set/get方法补上,JavaBean的习惯养好,另外如果报端口号占用的异常,你就把端口号改一下,因为你按老师步骤实践可能8888端口之前已经用过了。<...code...>

已采纳回答 / 江feng
这个原因建议去了解一个,原码、反码、补码的概念。IP地址是INT 类型的例如: 130在计算机中表示二进制位00000000 00000000 00000000 10000010 ,当它存入到字节数组中,由于一个字节有8位,故,存入后130为 10000010而二进制中最高位为符号位 (0代表整数,1代表负数),所以1000 0010表示的是一个负数,负数在计算机中是用的补码表示的,要求的原码,1000 0010 要先 -1 得:1000 0001 在求反后得其原码,0111 1110 转化为10进制为 ...

已采纳回答 / 浅唱__梦
byte是1个字节,能表示的数的范围是-128~127

已采纳回答 / 略坑
while 循环里面加上一行str=isr.readLine();

已采纳回答 / BeingTowards
程序会一直在死循环中执行  不会再执行死循环体下面的程序了  你可以把获取输入流的代码写到循环里

已采纳回答 / Janeil
表示客户端和服务器之间传输的指令和数据,其中包括当前操作的命令、所有发送的数据对象、是否操作成功和返回的结果四个属性

已采纳回答 / 汉娜之眼
既然图片能写入,为什么文字不行,按理说用的一个流如果没有格式限制就没有问题,这我也看不出什么问题。不过给你几个建议,你可以调试一下看看传文本的时候哪里阻塞了导致数据过不去,还有catch块不要抛出太多,可以用父类代替,最重要的一点。。。为什么没注释,还好代码不长也不难,要是复杂点真想回答的看一眼也觉得烦。。。

已采纳回答 / SoyaDokio
解决办法:在Server类的第33、34行像讲师一样插入这句代码:s.shutdownInput();在Server类的原第38、39行像讲师一样插入这句代码:s.shutdownOutput();在Client类的第24、25行像讲师一样插入这句代码:socket.shutdownOutput();在Client类的原第31、32行像讲师一样插入这句代码:socket.shutdownInput();p.s. 建议把Server类的第30行代码放到28或29行之前。

已采纳回答 / 损失函数
首先你应该把你的错误提示也贴出来,其次你在服务端并没有关闭流。

已采纳回答 / 心and心
读取数据有很多种方法,各有各的特点比如说字节流中,InputStream是最基本的,FileInputStream用来读取文件,DataInputStream适用于读取各种类型的数据,BufferedInputStream加缓冲可以提高IO性能字符流中也有相应的类,InputStreamReader,FileReader,BufferedReader其中BufferedReader有一个方法readLine(),可以一行一行读取,这个方法其他的都没有,使用起来比较方便再看它的构造方法,需要传入Reader...

已采纳回答 / SoyaDokio
方法有三,下面依次道来。主菜单操作:选中目标代码 - & Bl Source - &g右键快捷菜单操作:选中目标代码 - &代码 单击右键 - &ift Surround With - & Bl Try/catch B...

已采纳回答 / 慕粉1466417893
1. 为什么要用PrinterWriter?因为我们写程序的时候,往Socket里写数据,写的都是文本,都是字符,所以PrinterWriter用于程序员写入数据。因为PrinterWriter是包装的OutputStream,底层实现数据传输的时候,会把我们写入的字符转换成二进制数据,就是字节流,所以传输的时候都是字节流传输。2. 为什么要用InputStream接收?上面讲到了,底层传输的时候,都是字节流,所以要用InputStream读取,还要用BufferedReader转换成字符流,也是为了方便...

已采纳回答 / SoyaDokio
有一种解释是如果需要向流中输出的是文字之类的字符型数据,则使用这个组合:<...code...>如果需要向流中输出的是文件之类的二进制型数据,则使用这个组合:<...code...>

已采纳回答 / aryong
客户端pw.flush(); socket.shutdownInput();//关闭流是不是应该关闭输出流 socket.shutdownOutput();//关闭流
课程须知
本课程是 Java 开发课程的高级课程,需要对 Java 中的面向对象、IO、多线程,以及网络相关知识有一定的基础
老师告诉你能学到什么?
1、网络相关的基础知识 2、Java 中网络相关 API 的应用 3、实现基于 TCP 的 Socket 编程 4、实现基于 UDP 的 Socket 编程

微信扫码,参与3人拼团

微信客服

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

帮助反馈 APP下载

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

公众号

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

友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消