您的位置:首页 > 理论基础 > 计算机网络

java网络编程(1)

2015-03-31 17:08 106 查看

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的确认,那么一个连接就建立了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: