我的世界java.io.ioexception_java nio 简单例子出现 java.io.IOException: 远程主机强迫关闭了一个现有的连接错误...

importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.SelectionKey;importjava.nio.channels.Selector;importjava.nio.channels.SocketChannel;importjava.util.Iterator;class ClientThread implementsRunnable

{privateSelector selector;private booleanrunning;publicClientThread(Selector selector)

{this.selector =selector;

}

@Overridepublic voidrun()

{while(this.running)

{try{while(selector.select()>0)

{

Iterator iter =selector.selectedKeys().iterator();while(iter.hasNext())

{

SelectionKey key=iter.next();

iter.remove();if(key.isConnectable())

{

SocketChannel channel=(SocketChannel)key.channel();

channel.configureBlocking(false);

channel.finishConnect();

channel.register(this.selector, SelectionKey.OP_READ |SelectionKey.OP_WRITE);

System.out.println("+++++connect server success++++");

channel.write(ByteBuffer.wrap("hello client\n".getBytes()));

}else if(key.isReadable())

{

SocketChannel channel=(SocketChannel)key.channel();

ByteBuffer buffer= ByteBuffer.allocate(1024);

System.out.print("message from server:-->");int len=0;while((len = channel.read(buffer))>0)

{

buffer.flip();

System.out.println(new String(buffer.array(), 0, len));

buffer.clear();

}

channel.register(this.selector, SelectionKey.OP_WRITE);

}else if(key.isWritable())

{

SocketChannel channel=(SocketChannel)key.channel();

System.out.print("please enter:");

BufferedReader reader= new BufferedReader(newInputStreamReader(System.in));

String line=reader.readLine();

channel.write(ByteBuffer.wrap((line+"\n").getBytes()));

channel.register(this.selector, SelectionKey.OP_READ);

}

}

Thread.sleep(2000);

}

}catch(Exception e)

{this.running = false;

System.out.println("Error in poll loop of client");

System.out.println(e.getMessage());

}

System.out.println("rttttt");

}

System.out.println("11111");

}

}public classNioTcpClient4

{public static voidmain(String[] args)

{

SocketChannel client= null;

Selector selector= null;try{

client=(SocketChannel)SocketChannel.open();

client.configureBlocking(false);

client.connect(new InetSocketAddress("localhost", 1001));

selector=Selector.open();

client.register(selector, SelectionKey.OP_CONNECT);

}catch(Exception e)

{

System.out.println("client can't setup");

}new Thread(newClientThread(selector)).start();

System.out.println("asa");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值