【实例简介】
直接打开代码中的HttpFileServer的main函数即可查看效果和调试,调试一边你便了解原理了。
【实例截图】
【核心代码】
NettyTest
└── NettyTest
├── NettyTest.iml
├── pom.xml
├── src
│ │ └── protobuf
│ │ ├── SubscribeReq.proto
│ │ └── SubscribeResp.proto
│ ├── main
│ │ ├── java
│ │ │ └── personal
│ │ │ └── crixusshen
│ │ │ └── tomcat
│ │ │ ├── http
│ │ │ │ ├── handler
│ │ │ │ │ └── HttpFileServerHandler.java
│ │ │ │ └── HttpFileServer.java
│ │ │ ├── netty
│ │ │ │ ├── EchoServer.java
│ │ │ │ ├── handler
│ │ │ │ │ ├── EchoServerHandler.java
│ │ │ │ │ ├── SubReqClientHandler.java
│ │ │ │ │ ├── SubReqServerHandler.java
│ │ │ │ │ ├── TimeClientHandler.java
│ │ │ │ │ └── TimeServerHandler.java
│ │ │ │ ├── SubReqClient.java
│ │ │ │ ├── SubReqServer.java
│ │ │ │ ├── TimeClient.java
│ │ │ │ └── TimeServer.java
│ │ │ ├── protobuf
│ │ │ │ └── pojo
│ │ │ │ ├── SubscribeReqProto.java
│ │ │ │ └── SubscribeRespProto.java
│ │ │ ├── SampleSimpleApplication.java
│ │ │ ├── SampleTomcatApplication.java
│ │ │ ├── serialize
│ │ │ │ ├── handler
│ │ │ │ │ ├── SubReqClientHandler.java
│ │ │ │ │ └── SubReqServerHandler.java
│ │ │ │ ├── server
│ │ │ │ │ ├── SubReqClient.java
│ │ │ │ │ └── SubReqServer.java
│ │ │ │ ├── SubscribeReq.java
│ │ │ │ ├── SubscribeResp.java
│ │ │ │ └── UserInfo.java
│ │ │ ├── service
│ │ │ │ └── HelloWorldService.java
│ │ │ └── web
│ │ │ └── SampleController.java
│ │ └── resources
│ │ ├── application.properties
│ │ └── public
│ │ └── test.css
│ ├── protoc.exe
│ └── test
│ └── java
│ └── personal
│ └── crixusshen
│ └── tomcat
│ ├── FutureTest.java
│ ├── NonAutoConfigurationSampleTomcatApplicationTests.java
│ ├── SampleTomcatApplicationTests.java
│ └── SubscribeReqProtoTest.java
└── target
├── antrun
│ └── build-main.xml
├── classes
│ ├── application.properties
│ ├── personal
│ │ └── crixusshen
│ │ └── tomcat
│ │ ├── http
│ │ │ ├── handler
│ │ │ │ ├── HttpFileServerHandler$1.class
│ │ │ │ └── HttpFileServerHandler.class
│ │ │ ├── HttpFileServer$1.class
│ │ │ └── HttpFileServer.class
│ │ ├── netty
│ │ │ ├── EchoServer$1.class
│ │ │ ├── EchoServer.class
│ │ │ ├── handler
│ │ │ │ ├── EchoServerHandler.class
│ │ │ │ ├── SubReqClientHandler.class
│ │ │ │ ├── SubReqServerHandler.class
│ │ │ │ ├── TimeClientHandler.class
│ │ │ │ └── TimeServerHandler.class
│ │ │ ├── SubReqClient$1.class
│ │ │ ├── SubReqClient.class
│ │ │ ├── SubReqServer$1.class
│ │ │ ├── SubReqServer.class
│ │ │ ├── TimeClient$1.class
│ │ │ ├── TimeClient.class
│ │ │ ├── TimeServer$1.class
│ │ │ └── TimeServer.class
│ │ ├── protobuf
│ │ │ └── pojo
│ │ │ ├── SubscribeReqProto$1.class
│ │ │ ├── SubscribeReqProto$SubscribeReq$1.class
│ │ │ ├── SubscribeReqProto$SubscribeReq$Builder.class
│ │ │ ├── SubscribeReqProto$SubscribeReq.class
│ │ │ ├── SubscribeReqProto$SubscribeReqOrBuilder.class
│ │ │ ├── SubscribeReqProto.class
│ │ │ ├── SubscribeRespProto$1.class
│ │ │ ├── SubscribeRespProto$SubscribeResp$1.class
│ │ │ ├── SubscribeRespProto$SubscribeResp$Builder.class
│ │ │ ├── SubscribeRespProto$SubscribeResp.class
│ │ │ ├── SubscribeRespProto$SubscribeRespOrBuilder.class
│ │ │ └── SubscribeRespProto.class
│ │ ├── SampleSimpleApplication.class
│ │ ├── SampleTomcatApplication$1.class
│ │ ├── SampleTomcatApplication.class
│ │ ├── serialize
│ │ │ ├── handler
│ │ │ │ ├── SubReqClientHandler.class
│ │ │ │ └── SubReqServerHandler.class
│ │ │ ├── server
│ │ │ │ ├── SubReqClient$1.class
│ │ │ │ ├── SubReqClient.class
│ │ │ │ ├── SubReqServer$1.class
│ │ │ │ └── SubReqServer.class
│ │ │ ├── SubscribeReq.class
│ │ │ ├── SubscribeResp.class
│ │ │ ├── TestSerializableTime.class
│ │ │ └── UserInfo.class
│ │ ├── service
│ │ │ └── HelloWorldService.class
│ │ └── web
│ │ └── SampleController.class
│ └── public
│ └── test.css
├── MANIFEST.MF
├── maven-archiver
│ └── pom.properties
├── maven-status
│ └── maven-compiler-plugin
│ ├── compile
│ │ └── default-compile
│ │ ├── createdFiles.lst
│ │ └── inputFiles.lst
│ └── testCompile
│ └── default-testCompile
│ ├── createdFiles.lst
│ └── inputFiles.lst
├── NettyTest-1.0-SNAPSHOT.jar
├── NettyTest-1.0-SNAPSHOT.jar.original
├── surefire-reports
│ ├── personal.crixusshen.tomcat.NonAutoConfigurationSampleTomcatApplicationTests.txt
│ ├── personal.crixusshen.tomcat.SampleTomcatApplicationTests.txt
│ ├── TEST-personal.crixusshen.tomcat.NonAutoConfigurationSampleTomcatApplicationTests.xml
│ └── TEST-personal.crixusshen.tomcat.SampleTomcatApplicationTests.xml
└── test-classes
└── personal
└── crixusshen
└── tomcat
├── FutureTest$1.class
├── FutureTest2$1.class
├── FutureTest2.class
├── FutureTest.class
├── NonAutoConfigurationSampleTomcatApplicationTests$NonAutoConfigurationSampleTomcatApplication.class
├── NonAutoConfigurationSampleTomcatApplicationTests.class
├── SampleTomcatApplicationTests.class
└── SubscribeReqProtoTest.class
57 directories, 105 files