- package night;
- import java.net .InetSocketAddress;
- import java.io .IOException;
- import java.io .BufferedReader;
- import java.io .InputStreamReader;
- import java.nio.ByteBuffer;
- import java.nio.channels .SocketChannel;
- import java.nio.channels.*;
- public class Kfd extends Thread {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- new Kfd();
- System.out.println("请输入:");
- }
- static SocketChannel sc;
- String host="127.0.0.1";
- int port=10000;
- ByteBuffer readbuf =ByteBuffer.allocate(1024);
- ByteBuffer writebuf=ByteBuffer.allocate(1024);
- InetSocketAddress ad=new InetSocketAddress(host,port);
- public Kfd (){
- start();
- try {sc=SocketChannel.open();
- Selector sl=Selector.open();
- sc.configureBlocking(false);
- //连接到server;
- sc.connect(ad);
- System.out.println("客服端连接成功");
- if(!sc.finishConnect()){
- System.out.print("客户端连接失败");
- }
- } catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
- }
- }
- public void run() {
- while(true){
- try {
- BufferedReader buf=
- new BufferedReader
- (new InputStreamReader(System.in));
- String str =buf.readLine();
- byte[]pack=str.getBytes();
- writebuf.clear();
- writebuf.put(pack);
- writebuf.flip();
- System.out.println("到这里");
- //发送
- send(sc);
- //接受
- recive(sc);
- }
- catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
- }
- }
- }
- private void recive(SocketChannel sc)throws IOException{
- while(true){
- if(sc.isConnectionPending()){
- sc.read(readbuf);
- }
- readbuf.flip();
- byte[]pack=null;
- pack=new byte[readbuf.limit()];
- //将缓冲的数据打包到数组中
- readbuf.get(pack);
- System.out.println(new String(pack.toString()));
- }
- }
- private void send(SocketChannel sc){
- while(true){
- while(writebuf.hasRemaining()){
- try {
- sc.write(writebuf);
- } catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
- }
- }
- }
- }
- }
原文链接:http://refly.iteye.com/blog/1053152
【编辑推荐】
- 用nio实现Echo服务
- Java NIO 深入研究
- Java NIO聊天窗口实例
- Java NIO 经典实例代码
- Java NIO性能测试
推荐阅读
1.JTable ,JTable如何在内容里面存放组件(下拉框,图片)和修改数据。2.系统托盘TrayIcon的使用3.JPopupMenu的使用4.JTree的使用及替换样式5.BorderLayout的灵活使用6.进度条的同步读取和显示7.滚动条下拉时候滚动>>>详细阅读
本文标题:多线程NIO客户端实例
地址:http://www.17bianji.com/kaifa2/Java/1328.html
1/2 1