gpt4 book ai didi

java - 对于带有 netty 3.10.6 的套接字客户端,异常 : java. nio.channels.NotYetConnectedException

转载 作者:行者123 更新时间:2023-12-01 09:13:28 24 4
gpt4 key购买 nike

我需要连接到服务器,并且我遵循以下代码:

package SocketServer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetSocketAddress;
import java.nio.channels.Channel;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

import org.jboss.netty.bootstrap.ClientBootstrap;
import org.jboss.netty.channel.ChannelFactory;
import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.channel.Channels;
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
import org.jboss.netty.handler.codec.serialization.ObjectEncoder;

public class SocketClient {

final static Logger logger = Logger.getLogger(SocketClient.class);

public static void write(String bscsString){

String HOST = PropertyUtils.getProperty("HOST");
int PORT = Integer.parseInt(System.getProperty("port", PropertyUtils.getProperty("PORT")));

//create a Boss thread from thread pool
Executor BossPool = Executors.newCachedThreadPool();
Executor WorkerPool = Executors.newCachedThreadPool();

//create NIO client channel factories
ChannelFactory channelFactory = new NioClientSocketChannelFactory(BossPool,WorkerPool);

//Client Setup the channel using bootstrap
ClientBootstrap clientBootstrap = new ClientBootstrap(channelFactory);

//setup the Channel PipeLine Factory
ChannelPipelineFactory pipelineFactory = new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() throws Exception {
return Channels.pipeline(
new ObjectEncoder()
);
}

};

//set the pipeline
clientBootstrap.setPipelineFactory(pipelineFactory);

//connect to host port
InetSocketAddress addressToConnectTo = new InetSocketAddress(HOST, PORT);

//connect asynchronously :)
ChannelFuture cf = clientBootstrap.connect(addressToConnectTo);

//get the channel to send message
final org.jboss.netty.channel.Channel channel = cf.getChannel(); //could be a error here
String s = "hello from client";
ChannelFuture test = channel.write(s);
System.out.println("Written on server "+test);
test.syncUninterruptibly();
System.out.println("client synced "); }
}

但是,我收到以下错误:

Nov 23, 2016 8:41:28 PM org.jboss.netty.channel.DefaultChannelPipeline
WARNING: The pipeline contains no upstream handlers; discarding: [id: 0xa0193d7d] OPEN
2016-11-23 20:41:28 INFO SocketClient:60 - chanelfuture for Written on server org.jboss.netty.channel.DefaultChannelFuture@2f6a9cd7
java.nio.channels.NotYetConnectedException
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.cleanUpWriteBuffer(AbstractNioWorker.java:431)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.writeFromUserCode(AbstractNioWorker.java:128)
at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:84)
at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendDownstream(DefaultChannelPipeline.java:779)
at org.jboss.netty.channel.Channels.write(Channels.java:725)
at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.doEncode(OneToOneEncoder.java:71)
at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59)
at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:591)
at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:582)
at org.jboss.netty.channel.Channels.write(Channels.java:704)
at org.jboss.netty.channel.Channels.write(Channels.java:671)
at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:347)
at SocketServer.SocketClient.write(SocketClient.java:59)
at SocketServer.SocketServerHandler.channelReadComplete(SocketServerHandler.java:58)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelReadComplete(AbstractChannelHandlerContext.java:408)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelReadComplete(AbstractChannelHandlerContext.java:390)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelReadComplete(AbstractChannelHandlerContext.java:383)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelReadComplete(DefaultChannelPipeline.java:1339)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelReadComplete(AbstractChannelHandlerContext.java:408)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelReadComplete(AbstractChannelHandlerContext.java:390)
at io.netty.channel.DefaultChannelPipeline.fireChannelReadComplete(DefaultChannelPipeline.java:932)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:134)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:571)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:512)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:426)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:398)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:877)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
at java.lang.Thread.run(Thread.java:745)
Nov 23, 2016 8:41:28 PM org.jboss.netty.channel.DefaultChannelPipeline
WARNING: The pipeline contains no upstream handlers; discarding: [id: 0xa0193d7d] EXCEPTION: java.nio.channels.NotYetConnectedException
Nov 23, 2016 8:41:28 PM org.jboss.netty.channel.DefaultChannelPipeline
WARNING: The pipeline contains no upstream handlers; discarding: [id: 0xa0193d7d, /10.0.41.160:45707 => /10.0.41.160:11011] BOUND: /10.0.41.160:45707
Nov 23, 2016 8:41:28 PM org.jboss.netty.channel.DefaultChannelPipeline
WARNING: The pipeline contains no upstream handlers; discarding: [id: 0xa0193d7d, /10.0.41.160:45707 => /10.0.41.160:11011] CONNECTED: /10.0.41.160:11011
Nov 23, 2016 8:41:48 PM org.jboss.netty.channel.DefaultChannelPipeline
WARNING: The pipeline contains no upstream handlers; discarding: [id: 0xa0193d7d, /10.0.41.160:45707 :> /10.0.41.160:11011] DISCONNECTED
Nov 23, 2016 8:41:48 PM org.jboss.netty.channel.DefaultChannelPipeline
WARNING: The pipeline contains no upstream handlers; discarding: [id: 0xa0193d7d, /10.0.41.160:45707 :> /10.0.41.160:11011] UNBOUND
Nov 23, 2016 8:41:48 PM org.jboss.netty.channel.DefaultChannelPipeline
WARNING: The pipeline contains no upstream handlers; discarding: [id: 0xa0193d7d, /10.0.41.160:45707 :> /10.0.41.160:11011] CLOSED

我只使用过一点netty,所以这个有点误导。似乎在写入服务器时出现问题,但是它抛出尚未连接的异常

请指导我解决这个问题。谢谢

最佳答案

您不想调用 cf.getChannel,因为这会过早地为您提供 channel 。相反,你应该 add a listener 连接建立后将被触发的 future 。

关于java - 对于带有 netty 3.10.6 的套接字客户端,异常 : java. nio.channels.NotYetConnectedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40767974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com