日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java channels_java.nio.channels.NotYetConnectedException

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java channels_java.nio.channels.NotYetConnectedException 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:

服務端已啟動,端口9999。

客戶端通過Channel方式實現,功能一切正常。

客戶端通過Selector+Channel方式實現,程序報錯。

哪位兄臺遇到過此問題,請賜教

Exception in thread "main" java.nio.channels.NotYetConnectedException

at sun.nio.ch.SocketChannelImpl.ensureWriteOpen(SocketChannelImpl.java:269)

at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:474)

at demo.nio.SelectorDemo.run(SelectorDemo.java:55)

at demo.nio.SelectorDemo.main(SelectorDemo.java:24)

服務端代碼:

package demo.nio;

import java.io.IOException;

import java.net.InetSocketAddress;

import java.nio.ByteBuffer;

import java.nio.channels.ServerSocketChannel;

import java.nio.channels.SocketChannel;

/**

* @ClassName: ServerSocketChannel

* @Description:

* @author

* @date 2018年1月24日 下午9:53:15

*

*/

public class ServerSocketChannelDemo implements Runnable {

public static void main(String[] args) {

ServerSocketChannelDemo serverSocketChannelDemo = new ServerSocketChannelDemo();

serverSocketChannelDemo.run();

}

public void run() {

try {

ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();

serverSocketChannel.socket().bind(new InetSocketAddress(9999));

serverSocketChannel.configureBlocking(false);

while(true){

SocketChannel socketChannel = serverSocketChannel.accept();

if(socketChannel != null){

//do something with socketChannel...

ByteBuffer buf1 = ByteBuffer.allocate(10000);

socketChannel.read(buf1);

buf1.flip();

if(buf1.hasRemaining())

System.out.println(">>>服務端收到數據:"+new String(buf1.array()));

buf1.clear();

ByteBuffer buf2 = ByteBuffer.allocate(10000);

buf2.put("A word from server!".getBytes());

buf2.flip();

socketChannel.write(buf2);

socketChannel.close();

}else{

Thread.sleep(3000);

}

}

} catch (IOException e) {

e.printStackTrace();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

客戶端代碼(Channel實現):

package demo.nio;

import java.io.IOException;

import java.net.InetSocketAddress;

import java.nio.ByteBuffer;

import java.nio.channels.SelectionKey;

import java.nio.channels.Selector;

import java.nio.channels.SocketChannel;

/**

* @ClassName: SocketChannelDemo

* @Description:

* @author

* @date 2018年1月11日 下午10:01:40

*

*/

public class SocketChannelDemo implements Runnable{

public static void main(String[] args) {

SocketChannelDemo socketChannelDemo = new SocketChannelDemo();

socketChannelDemo.run();

}

public void run() {

try {

//通道

SocketChannel socketChannel = SocketChannel.open();

socketChannel.connect(new InetSocketAddress("127.0.0.1", 9999));

while(!socketChannel.finishConnect()){

wait(1000);

}

//緩沖區

ByteBuffer buf1 = ByteBuffer.allocate(10000);

buf1.put("A word from client!".getBytes());

buf1.flip();

if(buf1.hasRemaining())

socketChannel.write(buf1);

buf1.clear();

ByteBuffer buf2 = ByteBuffer.allocate(10000);

socketChannel.read(buf2);

if(buf2.hasRemaining())

System.out.println(">>>客戶端接收數據:"+new String(buf2.array()));

buf2.clear();

socketChannel.close();

} catch (IOException e) {

e.printStackTrace();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

客戶端代碼(Selector+Channel實現):

package demo.nio;

import java.io.IOException;

import java.net.InetSocketAddress;

import java.nio.ByteBuffer;

import java.nio.channels.SelectableChannel;

import java.nio.channels.SelectionKey;

import java.nio.channels.Selector;

import java.nio.channels.ServerSocketChannel;

import java.nio.channels.SocketChannel;

import java.util.Set;

import java.util.Iterator;

/**

* @ClassName: SelectorDemo

* @Description:

* @author

* @date 2018年1月12日 下午9:06:21

*

*/

public class SelectorDemo implements Runnable{

public static void main(String[] args) {

SelectorDemo selectorDemo = new SelectorDemo();

selectorDemo.run();

}

public void run() {

try {

//選擇器

Selector selector = Selector.open();

//通道

SocketChannel socketChannel1 = SocketChannel.open();

socketChannel1.configureBlocking(false);

SelectionKey key1 = socketChannel1.register(selector, SelectionKey.OP_CONNECT);

socketChannel1.connect(new InetSocketAddress("127.0.0.1", 9999));

while(true){

int readyChannels = selector.selectNow();//selectNow()非阻塞,select(timeout)和select()阻塞

if(readyChannels == 0)

continue;

//selector.wakeup();//第一個線程調用select后,需要執行此方法,阻塞在select上的線程會立馬返回。

Set> selectedKeys = selector.selectedKeys();

Iterator> keyIterator = selectedKeys.iterator();

while(keyIterator.hasNext()){

SelectionKey key = (SelectionKey) keyIterator.next();

if(key.isAcceptable()){

// a connection was accepted by a ServerSocketChannel.

ServerSocketChannel socketchannel = (ServerSocketChannel) key.channel();

}else if(key.isConnectable()){

// a connection was established with a remote server.

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

ByteBuffer buf1 = ByteBuffer.allocate(10000);

buf1.put("A word from client!".getBytes());

buf1.flip();

socketchannel.write(buf1);

buf1.clear();

ByteBuffer buf2 = ByteBuffer.allocate(10000);

socketchannel.read(buf2);

buf2.flip();

System.out.println(">>>客戶端接收數據:"+new String(buf2.array()));

buf2.clear();

}else if(key.isReadable()){

// a channel is ready for reading.

SelectableChannel fileChannel = key.channel();

}else if(key.isWritable()){

// a channel is ready for writing.

SelectableChannel fileChannel = key.channel();

}

keyIterator.remove();

}

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

總結

以上是生活随笔為你收集整理的java channels_java.nio.channels.NotYetConnectedException的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费看成人啪啪 | 99久久免费看精品国产一区 | 欧美日日日 | 亚洲黄色一级 | 国产欧美一区二区三区鸳鸯浴 | 国产精品久久久久久久一区探花 | 国产资源在线视频 | 国产91在线视频观看 | 日韩毛毛片| 成人免费无码大片a毛片抽搐色欲 | 69日本xxxxxxxx96 | 国产精品免费视频一区 | 久久久精品999| 另类视频在线观看 | 日本三级在线 | 亚洲国产成人精品激情在线 | 色综合久久天天综合网 | 黄色三级带 | 成年人黄色大全 | 狠狠躁日日躁夜夜躁2022麻豆 | 亚洲最大的av网站 | 欧美视频在线观看免费 | 懂色av成人一区二区三区 | 国产白浆一区二区 | 亚洲色图国产 | 亚洲精品免费在线播放 | 岛国av片| 国产一线二线在线观看 | 国产情侣久久 | 国产无遮挡又黄又爽又色 | v片在线免费观看 | 国产亚洲精品久久久久久777 | 中文字幕在线免费播放 | 欧美一级做 | 亚洲AV无码久久精品国产一区 | 高跟鞋丝袜猛烈xxxx | 黄色a一级片 | 毛片基地免费观看 | 伊人蕉久| 国产网红av | 黄色三级在线播放 | 成人免费大全 | 日韩国产欧美在线视频 | 免费无码一区二区三区 | 91桃色免费视频 | 国产白丝袜美女久久久久 | 日本丰满少妇裸体自慰 | 欧美激情69 | 日本一区二区在线免费 | 成人免费黄色网 | 激情综合啪啪 | 中文一区二区 | 日韩精品一区二区在线 | 亚洲一区在线免费 | www,色| 亚洲网站免费观看 | 久久久久毛片 | 国产精品一区二区在线看 | 精品国产鲁一鲁一区二区张丽 | jizz免费观看| 高h奶汁双性受1v1 | 澳门免费av| 毛片网站免费观看 | 国产熟女一区二区三区四区 | 日韩在线国产精品 | 亚洲国产一区视频 | 麻豆国产一区二区三区四区 | 亚洲一区二区三区免费看 | 青春草视频在线免费观看 | 国产妇女乱一性一交 | 久久精品久久久 | 97人妻精品一区二区三区动漫 | 国产在线播放一区 | 青草视频在线免费观看 | 亚洲一级黄色片 | 亚色视频 | 欧美性生活一区 | 我想看毛片| 国产又粗又硬视频 | 猫咪av在线 | 欧美亚洲福利 | 久久久久久久久久久99 | 中文字幕精品国产 | 欧洲av一区二区三区 | 九一国产精品 | 美女天天干 | 亚洲午夜无码av毛片久久 | 绯色av一区二区三区高清 | 四虎永久在线视频 | a免费毛片| 三叶草欧洲码在线 | 午夜两性网 | 91精品人妻一区二区三区四区 | 免费在线播放毛片 | 亚洲免费在线观看av | 亚洲图片激情小说 | 色哟哟网站在线观看 | 免费在线看污片 | 精品人妻无码一区二区色欲产成人 |