Socket编程注意点

Socket注意点

  • SO_TIMETOUT socket每次读写最多花费的毫秒数
    socket.setSoTimeout(10000); //10秒不能读到数据或者写出数据,SocketTimeoutException.
  • Socket的关闭
    try with Resource 或者传统的 close if not null.
    关闭Socket时,相关连的输入输出流、通道也会关闭,所以不用单独关闭。
  • read()
    read方法返回一个int值,但是有效值仅为字节。
  • 32位无符号大端二进制数
    4个字节,高位字节处在低地址,所以通过流读取32为无符号二进制数时,读取的第一个字节对应高位。
  • 输出流中换行
    \r\n
  • 输出流
    输出完毕时.flush
  • 构造函数
      Socket(host,port);//构造的过程中建立活动的网络连接
      Socket();//构造但不连接,可以进行个性化定制。
    
  • 状态变量
      socket.isClosed();//true:曾经连接过,现在关闭了
      socket.isConned();//true:连接过(远程端),但不一定现在仍然连接
      socket.isBound();//true:绑定过(本地端),但现在不一定绑定,对serverSocket起作用。
    
  • socket当前是否连接
    socket.isConnected() && !socket.isClosed()
  • Socket选项
    TCP_NODELAY:确保数据尽快发送,(缓冲会让数据的发送相对较慢)
    SO_TIMEOUT:确保从读流和写流的阻塞时间不会超过固定的毫秒数。
    SO_REUSEADDR:一个刚刚释放的Socket的端口可以给别的应用程序用。(可能还有传送到相应端口的数据没被读。)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容