美文网首页
Java Socket使用遇到的坑

Java Socket使用遇到的坑

作者: aitality | 来源:发表于2018-06-13 18:34 被阅读0次

    对于java大牛的请绕路,这篇文章只适合初学或者有一定基础的java开发人员阅读。对于java开发中的I/O模块应该不陌生,比如文件读写,上传下载等等,都是要和I/O打交道,对于文件读写我们都知道输入流最终都有一个默认结束符号,或为-1,或为null,所以只要判断结束就可以完成读写操作了。至于流操作的对象类,再次不多做解释,可自行查阅文档脑补。

    今天​要讲的是Java中的socket,学习过网络编程课程的同学应该不陌生,socket是一种基于TCP/UDP协议的双通道句柄,也称作“套接字”。由Socket和ServerSocket组成,建立连接以后生成具体的输入流和输出流,借助流可完成数据通信。

    具体怎么使用网上很多例子代码,在此我就不贴代码了,只说说我使用时遇到的坑:

    坑1、socket的流其实不是真正意义上的流,因为根本就没有结束标志,如果按照普通操作流的方式使用,通道会因为读取不到结束标志而一直处于阻塞状态。

    填坑:数据包你肯定听说过,就是具有一定结构的数据集合,如果你想正确稳定的读取socket数据,封装数据包是必不可少的,通常数据包的格式是:包头+数据体+校验码。包头一般存储数据体的大小,校验一般是数据体的md5值。

    坑2、ServerSocket会休眠,现象就是隔一段时间访问的话,时间变长,但是连续访问的速度很快。

    填坑:在服务端启动一个定时线程,定时给ServerSocket发送数据包,使得ServerSocket一直处于唤醒状态。

    相关文章

      网友评论

          本文标题:Java Socket使用遇到的坑

          本文链接:https://www.haomeiwen.com/subject/ahkseftx.html