public GroupChatServer(int port){
this.port = port;
}
/**
- 服务运行的方法
*/
public void run() throws Exception{
// 创建BossGroup和WorkGroup
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workGroup = new NioEventLoopGroup();
// 创建 ServerBootstrap 服务启动对象
ServerBootstrap bootstrap = new ServerBootstrap();
try{
// 给bootstrap设置相关的参数
bootstrap.group(bossGroup,workGroup)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG,128)
.childOption(ChannelOption.SO_KEEPALIVE,true)
.childHandler(new ChannelInitializer() {
@Override
protected void initChannel(SocketChannel sc) throws Exception {
// 获取pipeline对象
ChannelPipeline pipeline = sc.pipeline();
// 设置对应的handler
pipeline.addLast(“docoder”,new StringDecoder());
pipeline.addLast(“encoder”,new StringEncoder());
pipeline.addLast(new GroupChatServerHandler());
}
});
System.out.println(“服务端启动了…”);
// 绑定端口
ChannelFuture future = bootstrap.bind(port).sync();
future.channel().closeFuture().sync();
}finally {
bossGroup.shutdownGracefully();
workGroup.shutdownGracefully();
}
}
public static void main(String[] args) throws Exception{
GroupChatServer server = new GroupChatServer(8888);
server.run();
}
}
3.1 客户端处理器
获取服务器转发的消息
package com.dpb.netty.goupchat;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
/**
-
@program: netty4demo
-
@description: 客户端处理器
-
@author: 波波烤鸭
-
@create: 2019-12-29 14:19
*/
public class GroupChatClientHandler extends SimpleChannelInboundHandler {
/**
-
读取消息
-
@param channelHandlerContext
-
@param s
-
@throws Exception
*/
@Override
protected void channelRead0(ChannelHandlerContext channelHandlerContext, String s) throws Exception {
System.out.println(s.trim());
}
}
3.2 客户端代码
连接服务器,发送消息
package com.dpb.netty.goupchat;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.string.StringDecoder;
import io.netty.handler.codec.string.StringEncoder;
import java.util.Scanner;
/**
-
@program: netty4demo
-
@description:
-
@author: 波波烤鸭
-
@create: 2019-12-29 14:14
*/
public class GroupChatClient {
public String host;
public int port ;
public GroupChatClient(String host,int port){
this.host = host;
this.port = port;
}
public void run() throws Exception{
EventLoopGroup clientGroup = new NioEventLoopGroup(1);
Bootstrap bootstrap = new Bootstrap();
try{
bootstrap.group(clientGroup)
.channel(NioSocketChannel.class)
.handler(new ChannelInitializer() {
@Override
protected void initChannel(SocketChannel sc) throws Exception {
sc.pipeline().addLast(“decoder”,new StringDecoder());
sc.pipeline().addLast(“encoder”,new StringEncoder());
sc.pipeline().addLast(new GroupChatClientHandler());
}
});
ChannelFuture future = bootstrap.connect(host, port).sync();
Channel channel = future.channel();
// 发送消息
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextLine()){
String msg = scanner.nextLine();
channel.writeAndFlush(msg + “\n”);
}
}finally {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
文末
我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份PDF文档
- 第一个要分享给大家的就是算法和数据结构
- 第二个就是数据库的高频知识点与性能优化
- 第三个则是并发编程(72个知识点学习)
- 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料
还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来
转存中…(img-uIaIKKYE-1711711820552)]
- 第二个就是数据库的高频知识点与性能优化
[外链图片转存中…(img-ZgFn3PHS-1711711820552)]
- 第三个则是并发编程(72个知识点学习)
[外链图片转存中…(img-eqffcW1U-1711711820553)]
- 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料
[外链图片转存中…(img-LcLnrh75-1711711820553)]
还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来