我想在端口9061上创建一个Web,并在同一个应用程序中启动一个带有netty的套接字服务器在其他端口(例如1066)上,以便从其他系统中侦听我需要的一些信息。 我尝试了一些东西,但是我用servty服务器端口绑定了servlet端口,这是我不知道的。
以下是代码:
@Component
public class TCPServer {
@Autowired
@Qualifier("serverBootstrap")
private ServerBootstrap serverBootstrap;
@Autowired
@Qualifier("tcpSocketAddress")
private InetSocketAddress tcpPort;
private Channel serverChannel;
@PostConstruct
public void start() throws Exception {
serverChannel = serverBootstrap.bind(tcpPort).sync().channel().closeFuture().sync().channel();
}
@PreDestroy
public void stop() throws Exception {
serverChannel.close();
serverChannel.parent().close();
}
public ServerBootstrap getServerBootstrap() {
return serverBootstrap;
}
public void setServerBootstrap(ServerBootstrap serverBootstrap) {
this.serverBootstrap = serverBootstrap;
}
public InetSocketAddress getTcpPort() {
return tcpPort;
}
public void setTcpPort(InetSocketAddress tcpPort) {
this.tcpPort = tcpPort;
}
}
配置:
spring:
application:
name: MyServer
main:
banner-mode: off
server:
port: 9061
nettytcp:
puerto: 1066
我从未见过9061端口。
答案 0 :(得分:1)
这是因为你致电.closeFuture().sync()
将阻止ServerChannel
关闭,这将永远不会在这里。我想你只想打电话给serverBootstrap.bind(tcpPort).sync().channel()
。