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

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

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

已采纳回答 / 惫懒sloth
首先InetAddress.getLocalHost() 这个方法返回的就是byte[]数组,这个没法改。其次ipv4是4个0-255间的整数组成的,byte是1字节8 位,正好满足(2的8次方=256),所以用byte去接是合适的。但由于java中没有unsigned的类型,所有数都是带有正负位的,所以最高位的 1 将会被解释为符号位,另外 Java 中存储是按照补码存储,如果是地址中一个是135,转二进制 1000 0111 ,这会被java认为是补码形式,转换成原码便是 1111 0001,转换成十...

已采纳回答 / sxian_wang
肯定是你对着视频敲代码的时候敲错了。你检查下一下几个地方:定义的表示客户端数量的变量初始化是不是0你的System.out.println()语句是不是在accept()之前如果不是这两个地方有问题,你把serverSocket的代码贴上来,我给你看看

已采纳回答 / qq_情敌贝多芬_0
这说明服务器端的编码和客户端编码不一致,一致的话就不会乱码

已采纳回答 / 程序员大佬超
shutdownInput和shutdownOutput,这两个方法只关闭相应的输入、输出流,而它们并没有同时关闭网络连接的功能,java 数据流关闭后,对应的Socket不会自动关闭,除非你结束这个程序,他就会关闭,客户端socket只是处于半关闭状态,仍然可以和Server端交互,,,,,,so,,

已采纳回答 / 沉默的鱼200211
System.out.println("服务器地址: "+serverSocket.getInetAddress().getHostAddress());

已采纳回答 / 武庚_Rehan
如果采取字节输入流的话,最后还要将读到的字节转化为String类型输出,因为没有readLine()方法,这个转化的过程可能会出错,如果采用字符输入流的话,读到之后直接就可以输出,较为方便

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

已采纳回答 / wangdd3
写错了  是不用关闭输入输出流 直接关闭SOCKET就可以
课程须知
本课程是 Java 开发课程的高级课程,需要对 Java 中的面向对象、IO、多线程,以及网络相关知识有一定的基础
老师告诉你能学到什么?
1、网络相关的基础知识 2、Java 中网络相关 API 的应用 3、实现基于 TCP 的 Socket 编程 4、实现基于 UDP 的 Socket 编程

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消