JAVA网络通讯

JAVA网络通信TCP,实质上就是接通ServerSocket/Socket管道,然后进行数据传输。
以QQ为例,此项目只有一个ServerSocket管道,可以有多个Socket管道与ServerSocket相连,ServerSocket相当于服务器端,此项目中所有的输出都是先输出到服务器端,然后其他管道通过id或其他标识符来从服务器端获取相应的内容。
(山寨QQ,这个项目做到一半出了点异常,花了5天时间,终于解决,就因为好友列表id处多加了一个空格,导致以后登陆的每个id,接受发来的信息时无法接受,因为id不匹配–>导致管道无法接通,所以每个id都无法接受其他id的信息)
常用的输出流有两种(多用于处理文字):
①PrintWriter
②ObjectOutputStream
注:PrintWriter流常见的错误,输出时一定要是 对象.println();若为
对象.print(),则输出内容可能为空。使用PrintWriter时,要么加对象.flush();要么在创建对象时将自动刷新auto-flush设为true.
常用的读入流也有两种():
①InputStreamReader 与BufferedReader结合使用
②ObjectInputStream
使用上述流通讯时,空指针异常最为常见。
有以下几种情况:
①输出的内容为空
②对象未初始化
③在通信线程还未关闭时,主线程已关闭
④内容输出到服务器后,向客户端转发时不知道接通哪根管道。例:
如果管道选错,向张三发的消息,结果李四却收到了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值