package com.itheima.demo05;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousServerSocketChannel;
import java.nio.channels.AsynchronousSocketChannel;
import java.util.concurrent.Future;
public class Client {
public static void main(String[] args) throws IOException, InterruptedException {
AsynchronousSocketChannel server = AsynchronousSocketChannel.open();
Future<Void> connect = server.connect(new InetSocketAddress("127.0.0.1", 8080));
while (!connect.isDone()){
System.out.println("还没有连接上服务器,正在等待...");
Thread.sleep(1000);
}
System.out.println("与服务器连接成功");
Future<Integer> write = server.write(ByteBuffer.wrap("你好服务器".getBytes()));
while (!write.isDone()){
System.out.println("还没有传输完毕,正在传输....");
Thread.sleep(1000);
}
System.out.println("客户端连接完毕,结束");
server.close();
}
}
package com.itheima.demo05;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousServerSocketChannel;
import java.nio.channels.AsynchronousSocketChannel;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
public class Server {
public static void main(String[] args) throws IOException, InterruptedException, ExecutionException {
AsynchronousServerSocketChannel server = AsynchronousServerSocketChannel.open();
AsynchronousServerSocketChannel bind = server.bind(new InetSocketAddress(8080));
System.out.println("等待客户连接,.....");
Future<AsynchronousSocketChannel> accept = server.accept();
while (!accept.isDone()) {
System.out.println("还没有客户端连接,,,干点坏事....");
Thread.sleep(1000);
}
System.out.println("连接成功");
AsynchronousSocketChannel asynchronousSocketChannel = accept.get();
ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
Future<Integer> read = asynchronousSocketChannel.read(byteBuffer);
while (!read.isDone()) {
System.out.println("服务器还没有读取完毕");
}
String str = new String(byteBuffer.array(), 0, byteBuffer.position());
System.out.println("服务器发来的数据为:" + str);
System.out.println("读取完毕....");
server.close();
asynchronousSocketChannel.close();
}
}
先启动服务端…