- 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
【编辑推荐】