zoukankan      html  css  js  c++  java
  • java 网络编程

    • java独特的I/O方法
    • java的I/O是建立在流上面的
    • 输出流写入数据,输入流读取数据,即输出流将数据写入缓冲区,输入流将数据从缓冲区里面读出来
    • 所有的输出流写入数据的方法相同,所有的输入流读取数据的方法相同
    • 流是同步的即流是阻塞的,它会在读取数据之后进行其他操作
    • 使用write(byte[])或write(byte[],int off,int length)通常比一次发送一个字节要快得多
    • flush刷新:flush方法可以强迫窝在缓冲区里的数据的流发送数据,即便此时缓冲区还没有满
    • 在关闭流之前应刷新流。否则,流在关闭时,在缓冲区里的数据可能丢失
    • IOException异常,close方法会将与这个流关联的所有资源都释放,进一步的写入就会抛出异常
    • 缓冲区与内存的区别,缓冲区在内存上开辟
    • 原始流:InputStream和OutputStream是原始流,仅仅能够单个或成组的读写字节而已
    • 过滤器流:附加到原始流,在字节和各种格式之间来回转换
    • 从底层流读取几百个字节的速度与读取一个字节相当

      socket基础

      socket的七项操作

    • 连接远程主机
    • 发送数据
    • 接收数据
    • 关闭连接
    • 绑定端口
    • 监听入站数据
    • 在所有绑定端口上接收来自远程机器的连接

      socket的本质

    socket为内核对象,由操作系统内核来维护其缓冲区,引用计数,并且可以在多个线程中使用

    当我们使用socket函数以后,如果成功的话会返回一个int型的描述符,它指向前面那个被维护在内核里的socket数据结构。我们的任何操作都是通过这个描述符而作用到那个数据结构上的。这就像是我们在建立一个文件后得到一个文件描述符一样,对文件的操作都是通过文件描述符来进行的,而不是直接作用到inode数据结构上

    当建立了这个套接字以后,我们可以获得一个象文件描述符那样的套接字描述 符。就象我们对文件进行操作那样,我们可以通过向套接字里面写数据将数据传送到我们指定的地方,这个地方可以是远端的主机,也可以是本地的主机

    建立socket连接,对于准备建立一个连接,服务器端要两个步骤:bind, listen;客户端一个步骤:connct。如果服务器端accept一个connect,而客户端得到了这个accept的确认,那么一个连接就建立了。

  • 相关阅读:
    Chapter 1 Secondary Sorting:Introduction
    Apache Spark : RDD
    Apache Spark : Introduction
    Python 变量和数据类型
    CMP3$
    idea实现eclipse工作空间的思路
    Oracle 数据字典查询
    sql左连接、右连接、内连接、不写连接符号
    ADB
    Serverless
  • 原文地址:https://www.cnblogs.com/tutumissed/p/8276630.html
Copyright © 2011-2022 走看看