让Netty入门变得简单

https://mp.weixin.qq.com/s/MBnbLmCmFJo0QK9WNwXrXQ

如果先启动nettyClient就不会有nettyServer输出了;

package com.stono;import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;public class IOServer {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8000);new Thread(() -> {while (true) {try{Socket socket = serverSocket.accept();new Thread(() -> {try{byte[] data = new byte[1024];InputStream inputStream = socket.getInputStream();while (true) {int len;while ((len = inputStream.read(data)) != -1) {System.out.println(new String(data, 0, len));}}}catch (Exception e){}}).start();}catch (Exception e){}}}).start();}
}

package com.stono;import java.net.Socket;
import java.util.Date;public class IOClient {public static void main(String[] args) {new Thread(() -> {try {Socket socket = new Socket("127.0.0.1", 8000);while (true) {try {socket.getOutputStream().write((new Date() + ": hello world").getBytes());socket.getOutputStream().flush();Thread.sleep(2000);} catch (Exception e) {e.printStackTrace();}}} catch (Exception e) {e.printStackTrace();}}).start();}
}

package com.stono;import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.string.StringDecoder;public class NettyServer {public static void main(String[] args) {ServerBootstrap serverBootstrap = new ServerBootstrap();NioEventLoopGroup boos = new NioEventLoopGroup();NioEventLoopGroup worker = new NioEventLoopGroup();serverBootstrap.group(boos, worker).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer<NioSocketChannel>() {@Overrideprotected void initChannel(NioSocketChannel ch) throws Exception {ch.pipeline().addLast(new StringDecoder());ch.pipeline().addLast(new SimpleChannelInboundHandler<String>() {@Overrideprotected void channelRead0(ChannelHandlerContext channelHandlerContext, String s) throws Exception {System.out.println(s);}});}}).bind(8000);}
}

package com.stono;import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.string.StringEncoder;import java.util.Date;
import java.util.concurrent.TimeUnit;public class NettyClient {public static void main(String[] args) throws InterruptedException {Bootstrap bootstrap = new Bootstrap();NioEventLoopGroup group = new NioEventLoopGroup();bootstrap.group(group).channel(NioSocketChannel.class).handler(new ChannelInitializer<Channel>() {@Overrideprotected void initChannel(Channel channel) throws Exception {channel.pipeline().addLast(new StringEncoder());}});Channel channel = bootstrap.connect("127.0.0.1", 8000).channel();while (true) {channel.writeAndFlush(new Date() + ": hello world");TimeUnit.SECONDS.sleep(2);}}
}

让Netty入门变得简单相关推荐

  1. Netty入门与实战教程

    前言:都说Netty是Java程序员必须要掌握的一项技能,带着不止要知其然还要知其所以然的目的,在慕课上找了一个学习Netty源码的教程,看了几章后着实有点懵逼.虽然用过Netty,并且在自己的个人网 ...

  2. netty入门前置知识-NIO

    netty入门前置知识-NIO Netty简介 Netty 的介绍 Netty 的应用场景 互联网行业 游戏行业 大数据领域 其它开源项目使用到 Netty Netty 的学习资料参考 Java BI ...

  3. Netty入门教程——认识Netty

    什么是Netty? Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架. Netty 是一个广泛使用的 Java 网络编程框架(N ...

  4. Netty入门与实战:仿写微信IM即时通讯系统

    转载自:Netty入门与实战:仿写微信IM即时通讯系统 Netty是互联网中间件领域使用最广泛最核心的网络通信框架,几乎所有互联网中间件或者大数据领域均离不开Netty,掌握Netty是作为初中级工程 ...

  5. PS入门教程:简单实用的PS快捷键教程1

    今天带来一期超实用的PS快捷键教程.所谓的PS快捷键教程,就是为了在一定程度上提升日常工作中的绘图速度而定义的快捷方式.在工作中我们常看到同事不会去为了一个命令,在菜单和工具栏上寻寻觅觅,只是不停的敲 ...

  6. PS入门教程:简单实用的PS快捷键教程2

    上篇内容从工具箱.文件操作.图层混合.选择功能.视图操作五方面入手分类总结了常用的PS快捷键教程.这篇内容小编再将从编辑操作.图像调整.加点按.取消操作这五方面为大家加码日常都可用到的PS快捷键教程. ...

  7. 使用Netty实现的一个简单HTTP服务器

    为什么80%的码农都做不了架构师?>>>    使用Netty实现的一个简单HTTP服务器 1.HttpServer,Http服务启动类,用于初始化各种线程和通道 public cl ...

  8. python的简单编程-python入门脚本的简单示例

    编程之家收集整理的这篇文章主要介绍了python入门脚本的简单示例,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. 感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. ...

  9. 【Netty】Netty 入门案例分析 ( Netty 线程模型 | Netty 案例需求 | IntelliJ IDEA 项目导入 Netty 开发库 )

    文章目录 一. Netty 线程模型 二. Netty 案例需求 三. IntelliJ IDEA 引入 Netty 包 一. Netty 线程模型 1 . Netty 中的线程池 : Netty 中 ...

最新文章

  1. python list排序的两种方法及实例讲解
  2. c# 备份oracle waitforexit()方法死锁,ProcessStartInfo挂在“WaitForExit”上?为什么?
  3. java 搜索起始位置,从Java中的给定位置搜索字符
  4. PaddlePaddle︱开发文档中学习情感分类(CNN、LSTM、双向LSTM)、语义角色标注
  5. 【论文】 NLP中命名实体识别从机器学习到深度学习的代表性研究
  6. linux 查看外网ip信息
  7. 【蓝桥杯Java组】一学就会的小技巧(五):矩阵快速幂
  8. iOS 自建应用内测分发平台
  9. Maven之查找依赖信息的网站
  10. 小白也能看懂的零信任SDP介绍
  11. 电商销售数据分析与预测(日期数据统计、按天统计、按月统计)
  12. 数据分析 --- day10python基础
  13. java基础之throws关键字_繁星漫天_新浪博客
  14. 香港科大汪校长轻松访谈(2)|与第一代中国基金经理刘央笑看人生(精编版)
  15. 兄弟连兄弟会机构好不好
  16. NEUQ图灵杯之A题——蔡老板的会议
  17. 计算机网络信号电平,电平信号什么意思_电平和电压的区别
  18. mysql temporary_MYSQL中的CREATE TEMPORARY TABLE
  19. web服务器 ---nginx 虚拟主机的创建(基于 域名 . 端口 . ip )以及nginx访问控制
  20. Chrome浏览器扩展/插件推荐

热门文章

  1. Chapter 6. H.264/MPEG4 Part10
  2. WinForm 下实现一个自动关闭的MessageBox
  3. 任务47:Identity MVC:ReturnUrl实现
  4. bzoj 2528: [Poi2011]Periodicity【kmp+构造】
  5. 将地址强制转换为指针
  6. linux之stat
  7. ADO+MFC数据库编程常用语句
  8. BaseAdapter的ArrayIndexOutOfBoundsException
  9. 本地访问网站好使外网不好用 可能是防火墙端口
  10. 关于解决Server Tomcat v9.0 Server at localhost failed to start的问题