![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
闲_风
这个作者很懒,什么都没留下…
展开
-
JAVA抓取百度图片搜索
1、抓取方式 一般来说,应该用jsoup来抓取网页中的Image的,但是,由于百度图片的加载不再是翻页形式的了,而是使用ajax的方式动态加载。所以,使用jsoup的话,也就只能拿到第一页的内容,想要获取后面页码的内容,效力不够。不过,既然是ajax的方式,我们自然也可以通过ajax的内容来获取到图片内容。2、验证 可以看到响应3、...原创 2020-11-29 16:19:28 · 847 阅读 · 0 评论 -
网络编程 NIO(Non-Blocking IO)
NIO主要是通过channel通道来运输数据,buffer来装载数据,通过多路复用器selector来注册通道。值得注意的是,每次使用buffer前,装载时记得clera()一下,读取时flip()一下。 NIO也有阻塞的地方,accept()方法依然会阻塞等待客户端的连接,channel.read()方法也会阻塞等待读取,任何的输入操作也会阻塞,多路复用器的...原创 2019-01-17 13:53:40 · 218 阅读 · 0 评论 -
网络编程 AIO(Asynchronous IO)
AIO,异步非阻塞IO,是JDK1.7引入的,在nio包下,相比NIO,多了4个异步通道类,AsynchronousSocketChannel,AsynchronousServerSocketChannel,AsynchronousFileChannel,AsynchronousDatagramChannel。和NIO类似,都是使用ByteBuffer来缓存数据,Channel来传输...原创 2019-01-25 10:17:29 · 1000 阅读 · 0 评论 -
网络编程 BIO(Blocking IO)
在网络编程中,主要的是ServerSocket和Socket这两个类,以及输入输出流的包装。 需要注意的是,会进行阻塞的几个点。accept()方法、readLine()方法以及键盘输入等都会进行阻塞。 在服务端,使用新起线程来和客户端连接,保证每个客户端都是一个新的线程!这样,就算发生阻塞时,也只会阻塞一个线程,其他线程仍旧可以正常工作。 ...原创 2019-01-15 11:33:21 · 246 阅读 · 0 评论 -
网络编程 netty定时断线、重连
客户端数量多,且需要传递的数据量级较大。可以周期性的发送数据的时候,使用该机制。要求对数据的即时性不高的时候,才可使用。 优点是可以使用数据缓存。不是每条数据进行一次数据交互。可以定时回收资源,对资源利用率高。 对服务端来说,主要是读数据,使用ReadTimeoutHandler类来控制,ReadTimeoutHandler定义一个定时断线处理器...原创 2019-02-15 14:00:33 · 1345 阅读 · 1 评论 -
网络编程 netty
Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。client--server交互demoserver: 在server中定义线程组、配置、端口、缓存区大小等。...原创 2019-02-12 16:55:35 · 291 阅读 · 0 评论 -
网络编程 netty使用结束标记解决粘包问题
netty使用tcp/ip协议传输数据。而tcp/ip协议是类似水流一样的数据传输方式。多次访问的时候有可能出现数据粘包的问题。客户端和服务器,协商定义一个特殊的分隔符号,分隔符号长度自定义。如:‘#’、‘$_$’、‘AA@’。在通讯的时候,只要没有发送分隔符号,则代表一条数据没有结束。 大致内容同前一篇博客相似,不同之处在于bootstrap.childHand...原创 2019-02-14 09:44:33 · 1889 阅读 · 0 评论 -
网络编程 websocket
websocket是一种持久化的协议,在建立起连接之后,和服务器就产生了一个通道,之后客户端和服务端的会话,都在这个通道中进行,而不会发起新的请求。协议头不再是http://开头的,而是以ws://进行开头,状态码是101。 websocket主要有3个事件,建立连接的open事件,发送消息的message事件以及关闭连接的close事件。在客户端new webs...原创 2019-02-20 11:52:05 · 1069 阅读 · 0 评论 -
网络编程 websocket聊天室demo
通过websocket实现聊天室主要是将消息进行广播,把消息发送给其他的用户会话中去,通过消息推送,推送到每一个session里面去。 通过一个静态共享变量如List获取所有的session通道,然后遍历这个List,把消息广播出去。public void broadcast(List<Session> sessions,String msg) ...原创 2019-02-20 14:15:56 · 493 阅读 · 0 评论