标签:seconds encode system trap exce stack tin java time
让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>() { @Override protected void initChannel(NioSocketChannel ch) throws Exception { ch.pipeline().addLast(new StringDecoder()); ch.pipeline().addLast(new SimpleChannelInboundHandler<String>() { @Override protected 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>() { @Override protected 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); } } }
标签:seconds encode system trap exce stack tin java time
原文地址:https://www.cnblogs.com/stono/p/9198407.html