网络编程
miaoyibosysu
这个作者很懒,什么都没留下…
展开
-
NIO服务器示例(使用 select( )来为多个通道提供服务)
package com.nio.demo;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.nio.ByteBuffer;import java.nio.channels.SelectableChannel;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channe原创 2020-06-28 17:10:30 · 343 阅读 · 0 评论 -
管道(pipe)示例(带注释)
Pipe 说明管道可以被用来仅在同一个 Java 虚拟机内部传输数据。虽然有更加有效率的方式来在线程之间传输数据,但是使用管道的好处在于封装性。1codepackage com.nio.demo;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.Channels;import java.nio.channels.Pipe;import java.nio.channels.Readab原创 2020-06-23 10:05:57 · 778 阅读 · 0 评论 -
HTTP几种连接方式
HTTP连接的几种方式串行连接此时一个连接对应一个请求,一个请求完成后才会开始下一个请求。完成的标志是服务端的数据到达客户端,客户端读取响应数据后关闭连接,然后发起下一个连接。持久化连接此时一个连接可以发送多个请求,一个请求完成后,并不会关闭连接,而是等待下一个请求执行。管道化连接持久化连接下的一种方式,客户端会将多个请求排队,在一个连接上发送给服务器,和持久化连接不同的是,管道化连接...原创 2019-12-26 08:48:18 · 4078 阅读 · 0 评论 -
TCP连接的可靠性
假设这样一种场景:客户端和服务器建立连接后,客户端发出消息,但由于网络原因,消息还没有到达服务器,此时连接被关闭,然后重新建立新的连接,发送新消息,但刚才在网络中游荡的消息(上一个连接的)也到达了服务器…tcp是如何处理这种场景的?首先,如果连接被关闭时,客户端没有收到服务器传来的确认信号,会处于一种“time_wait”状态;其次,消息在网络传输时,有固定的“生命时长”;time_wa...原创 2019-02-14 16:57:07 · 318 阅读 · 0 评论 -
5种I/O模型比较
来源于《unix网络编程》中的一张图,比较直观:前4中I/O模型都是同步I/O模型,因为其中真正的I/O操作都将阻塞进程。我们用的最多的是第一种:阻塞式I/O;逐渐引起重视的是第三种:I/O复用。如果但从这张图上看,I/O复用并没有什么优势,事实上由于使用select需要两个系统调用(图上可以看出它需要经过两个过程才能完成I/O读写),I/O复用还稍显劣势。不过使用select的优势在于我...原创 2019-02-18 19:17:58 · 345 阅读 · 0 评论 -
如何理解UDP的“无连接”特性?
面试中经常会被问到UDP和TCP的区别,其中一个区别就是:UDP是无连接的,而TCP是有连接的。只知道这一句话是不够的,更应该理解它真正的意思。首先看UDP发送消息的过程:套接字本身比较抽象,可以理解为操作系统为应用程序提供一组应用程序接口(API),应用程序可以通过套接字接口,来使用网络套接字,以进行数据交换。之所以说UDP是无连接的,因为使用UDP协议的发送者和接受者之间不必存在任何...原创 2019-02-13 17:05:29 · 8070 阅读 · 0 评论