【socket编程】
月疯
得到你最想要的东西,最保险的办法,那就是你能配得上你最想要的东西。机会是留给有准备的人,运气是留给有天赋的努力者。
展开
-
netty大白话--helloword(一)
先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。如果你已经万事具备,那么我们先从一段代码开始。程序员们习惯的上手第一步,自然是”Hello world”;,不过Netty官网的例子却偏偏抛弃了”Hello world”...转载 2019-05-05 19:13:55 · 211 阅读 · 0 评论 -
netty大白话--概念(二)
“Hello World”的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什。方便自己以后更灵活的使用和扩展。ChannelEvent先说这个ChannelEvent,因为Netty是基于事件驱动的,就是我们上文提到的,发生什么事,就通知”有关部门”。所以,不难理解,我们自己的业务代码中,一定有跟这些事件相关的处理。在样例代码,我们...转载 2019-05-05 19:16:14 · 228 阅读 · 0 评论 -
针对网上的一份netty的面试题之(netty的粘包和拆包)
什么是粘包与半包问题?解决粘包半包问题由于底层的TCP无法理解上层的业务数据,所以在底层是无法保证数据包不被拆分和重组的,这个问题只能通过上层的应用协议栈设计来解决,根据业界的主流协议的解决方案,可以归纳如下。(1)在包尾增加分割符,比如回车换行符进行分割,例如FTP协议;linebase包和delimiter包下,分别使用LineBasedFrameDecoder和Delimiter...转载 2019-05-28 19:16:10 · 451 阅读 · 0 评论 -
netty大白话(四)
要学习netty先了解NIO。初步了解NIO的知识:参考地址:https://blog.csdn.net/suifeng3051/article/details/48160753编写一个netty的服务器和客户端:参考地址:https://blog.csdn.net/suifeng3051/article/details/25238243了解netty的组件组成:参考地址:...转载 2019-05-06 13:29:28 · 236 阅读 · 0 评论 -
netty的handler里面ctx.channel().writeAndFlush()和ctx.writeAndFlush()的区别
netty的双向通讯:https://blog.csdn.net/ZBylant/article/details/82940132转载 2019-05-28 17:22:11 · 4823 阅读 · 1 评论 -
netty的channel介绍
Channel的基本方法id():返回此通道的全局唯一标识符.isActive():如果通道处于活动状态并连接,则返回true.isOpen():如果通道打开并且可能稍后激活,则返回true.isRegistered():如果通道注册了EventLoop,则返回true。config():返回关于此通道的配置.localAddress():返回此通道绑定的本地地址.pipeline(...翻译 2019-05-22 15:45:43 · 3126 阅读 · 0 评论 -
netty大白话--字符串的收发(三)
了解了Netty的基本概念,开发起来应该会顺手很多。在“Hello World”代码中,我们只是在完成绑定的时候,在各自的本地打印了简单的信息,并没有客户端和服务端的消息传递。这个肯定是最基本的功能。在上代码之前,先补充一个Netty中重要的概念,ChannelBuffer。ChannelBufferNetty中的消息传递,都必须以字节的形式,以ChannelBuffer为载体传递。简单的...转载 2019-05-05 19:18:50 · 608 阅读 · 0 评论 -
做IM netty的优势
首先,我们来了解一下,Netty到底是个什么东西。网络上找到的介绍:Netty是由JBOSS提供的基于Java NIO的开源框架,Netty提供异步非阻塞、事件驱动、高性能、高可靠、高可定制性的网络应用程序和工具,可用于开发服务端和客户端。 为什么不用Java BIO? 一连接一线程,由于线程数是有限的,所以这样非常消耗资源,最终也导致它不能承受高并发连接的需求。 性能低,因为频繁的...原创 2019-05-06 15:47:24 · 1375 阅读 · 0 评论 -
Telnet配合netty打印数据(springboot+netty)
启动类:package com.sharejdbc.test;import com.sharejdbc.test.config.NettyServer;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.CommandLineRunner;imp...原创 2019-05-28 17:13:23 · 942 阅读 · 0 评论 -
Protobuf的优点
为什么使用Protobuf?对于App网络传输协议,我们比较常见的、可选的,有三种,分别是json/xml/protobuf,老规矩,我们先分别来看看这三种格式的优缺点: 优点: json优点就是较XML格式更加小巧,传输效率较xml提高了很多,可读性还不错。 xml优点就是可读性强,解析方便。 protobuf优点就是传输效率快(据说在数据量大的时候,传输效率比xml和js...原创 2019-05-06 15:45:23 · 3694 阅读 · 0 评论 -
Netty的核心组件
Netty是什么? Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程...转载 2019-05-31 11:57:36 · 178 阅读 · 0 评论 -
netty小结
/** * 初始化channel */ @Override public void initChannel(SocketChannel ch) { try { ByteBuf buf = Unpooled.copiedBuffer(flag.getBytes()); ChannelPipeline...转载 2019-07-08 09:54:51 · 220 阅读 · 0 评论 -
网络编程mina介绍
mina和netty是同一个作者:向作者致敬!服务器代码:首先添加依赖:<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>...转载 2019-05-28 18:59:49 · 333 阅读 · 0 评论 -
网络编程BaseIO介绍
BaseIO是基于java nio开发的一款可快速构建网络通讯项目的异步IO框架,其以简单易用的API和优良的性能深受开发者喜爱。项目特色 支持协议扩展,已知的扩展协议有: Redis协议(仅作测试),示例:详见 {baseio-test} LineBased协议(基于换行符的消息分割),示例:详见 {baseio-test} FixedLeng...转载 2019-05-28 18:52:27 · 421 阅读 · 0 评论 -
网络编程t-io介绍
参考地址:https://www.t-io.org/常见应用场景IM(官方提供了im例子,含web端) 实时监控 推送服务(已内置API) RPC 游戏 物联网(已有很多案例) 其它实时通讯类型的场景,不一一列举t-io是一个网络框架,从这一点来说是有点像 netty 的,但 t-io 为常见和网络相关的业务(如 IM、消息推送、RPC、监控)提供了近乎于现成的解...原创 2019-05-28 18:43:50 · 1302 阅读 · 0 评论 -
Voovan网络编程介绍
Voovan是高性能异步通信、HTTP服务器和客户端通信、动态编译支持、数据库操作帮助类等工具的框架。参考地址:http://www.voovan.org/Voovan的参考手册:http://voovan.mydoc.io/Voovan 是一个高性能异步网络框架和 HTTP 服务器框架,同时支持 HTTP 客户端抓取、动态编译支持、数据库访问封装以及 DateTi...原创 2019-05-28 18:48:49 · 374 阅读 · 0 评论 -
NIO编程
传统socket的编程实现了解上面的demo存在问题,我们提出了解决方案:NIO编程关于NIO相关的文章网上也有很多,这里不打算详细深入分析,下面简单描述一下NIO是如何解决以上三个问题的。线程资源受限NIO编程模型中,新来一个连接不再创建一个新的线程,而是可以把这条连接直接绑定到某个固定的线程,然后这条连接所有的读写都由这个线程来负责,那么他是怎么做到的?我们用一幅图来对比一...转载 2019-04-29 15:45:03 · 159 阅读 · 0 评论 -
Netty编程
那么Netty到底是何方神圣?用一句简单的话来说就是:Netty封装了JDK的NIO,让你用得更爽,你不用再写一大堆复杂的代码了。用官方正式的话来说就是:Netty是一个异步事件驱动的网络应用框架,用于快速开发可维护的高性能服务器和客户端。下面是我总结的使用Netty不使用JDK原生NIO的原因使用JDK自带的NIO需要了解太多的概念,编程复杂,一不小心bug横飞 Netty底层I...转载 2019-04-29 15:53:00 · 223 阅读 · 0 评论 -
Netty入门
netty是什么?官方那个给出的介绍是:Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。然后我们简单理解一下,netty是封装java socket noi的。 类似的功能是 apache的mina。相对于Tomcat这种Web Server(顾名思义主要是提供Web协议相...转载 2019-04-29 17:20:18 · 165 阅读 · 0 评论 -
telnet解释
Telnet是什么?Telnet是teletype network的缩写,现在已成为一个专有名词,表示远程登录协议和方式,分为Telnet客户端和Telnet服务器程序. Telnet可以让用户在本地Telnet客户端上远端登录到远程Telnet服务器上。专业的说,Telnet是Internet上远程登录的一种程序;它可以让您的电脑通过网络登录到网络另一端的电脑上,甚至还可以存取那台...转载 2019-04-29 17:21:06 · 2955 阅读 · 0 评论 -
NIO中的几个基础概念
一.NIO中的几个基础概念在NIO中有几个比较关键的概念:Channel(通道),Buffer(缓冲区),Selector(选择器)。 首先从Channel说起吧,通道,顾名思义,就是通向什么的道路,为某个提供了渠道。在传统IO中,我们要读取一个文件中的内容,通常是像下面这样读取的:public class Test { public static void main(S...转载 2019-04-29 18:42:39 · 233 阅读 · 0 评论 -
Java NIO:浅析I/O模型
一.什么是同步?什么是异步?同步和异步的概念出来已经很久了,网上有关同步和异步的说法也有很多。以下是我个人的理解: 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行; 异步就是:如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行不会导致整个流程的暂时等待。...转载 2019-04-29 18:49:49 · 128 阅读 · 0 评论 -
BIO,NIO和AIO的区别
BIO也就是同步阻塞的I/O,由JAVA程序自己处理I/O流操作;一个线程启用I/O请求后,必须等I/O处理完毕才能进行下一步;NIO是同步非阻塞的I/O,还是由JAVA处理应用操作,不过单独开启一个线程去做I/O处理,而且会将数据读写到一个Buffer缓冲区中,之后交由OS去进行处理,缺点是需要多路复用器不断去轮询,在触发I/O操作后,用户线程也会需要时不时的去访问查看是否已经完成(jdk7...转载 2019-04-29 19:31:46 · 255 阅读 · 0 评论 -
tcp和udp的优缺点
为什么使用TCP? 优点: TCP的优点体现在稳定、可靠上,在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开连接用来节约系统资源。 UDP的优点体现在快,比TCP稍安全,UDP没有TCP拥有的各种机制,是一个无状态的传输协议,所以传递数据非常快,没有TCP的这些机制,被攻击利用的机制就少一些,但是也无法避免被攻击。...原创 2019-05-06 15:44:07 · 2939 阅读 · 0 评论 -
传统socket的编程实现
IO编程我们简化下场景:客户端每隔两秒发送一个带有时间戳的"hello world"给服务端,服务端收到之后打印。为了方便演示,下面例子中,服务端和客户端各一个类,把这两个类拷贝到你的IDE中,先后运行 IOServer.java 和IOClient.java可看到效果。下面是传统的IO编程中服务端实现IOServer.java/** * @author 闪电侠 */...转载 2019-04-29 15:11:05 · 273 阅读 · 0 评论