Java NIO 是 Java 1.4引入的一個新的IO API,可以有效地提高IO的性能。與傳統(tǒng)的Java IO設(shè)計不同的是,Java NIO采用了非阻塞式IO操作,使用緩存區(qū)進行數(shù)據(jù)交換。通過NIO可以實現(xiàn)網(wǎng)絡(luò)通信,Socket是NIO中的重要部分。
import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; public class NIOSocketClient { public static void main(String[] args) throws Exception { SocketChannel channel = SocketChannel.open(); channel.configureBlocking(false); channel.connect(new InetSocketAddress("localhost", 9999)); while(!channel.finishConnect()){ //等待連接完成 } System.out.println("連接成功!"); ByteBuffer buffer = ByteBuffer.allocate(1024); buffer.put("Hello NIO!".getBytes()); buffer.flip(); channel.write(buffer); channel.close(); } }
上述代碼展示了一個簡單的NIO Socket客戶端,創(chuàng)建SocketChannel時需要設(shè)置為非阻塞模式,然后使用connect方法連接到服務(wù)器。連接過程是異步的,需要使用finishConnect方法確認連接已經(jīng)建立。連接成功后可以通過put方法將數(shù)據(jù)寫入緩存區(qū)中,再使用write方法將緩存區(qū)中的數(shù)據(jù)發(fā)送到服務(wù)端。