L'utilisation de la technologie NIO pour obtenir une transmission de données fiable dans les fonctions Java comprend : la création de canaux, la définition du mode non bloquant, l'acceptation des connexions, la lecture et l'écriture de données et la fermeture gracieuse des connexions. En utilisant des tampons et des canaux, NIO peut traiter les données de manière asynchrone, améliorant ainsi le débit et la réactivité des applications.
NIO (Non-blocking I/O) est un paradigme de programmation Java qui vous permet de lire et d'écrire des données de manière asynchrone, améliorant ainsi l'application débit et réactivité. Dans un environnement sans serveur tel qu'AWS Lambda, l'utilisation de NIO est essentielle car elle minimise le temps d'exécution des fonctions et augmente la disponibilité.
L'idée principale de NIO est d'utiliser les deux concepts clés suivants :
Voici les étapes pour utiliser NIO pour implémenter une transmission de données fiable dans les fonctions Java :
1 Créer un canal
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); serverSocketChannel.bind(new InetSocketAddress(PORT));
2.3 . Accepter les connexions
serverSocketChannel.configureBlocking(false);
while (true) { SocketChannel socketChannel = serverSocketChannel.accept(); if (socketChannel != null) { socketChannel.configureBlocking(false); // 处理连接... } }
ByteBuffer incomingBuffer = ByteBuffer.allocate(BUFFER_SIZE); socketChannel.read(incomingBuffer); ByteBuffer outgoingBuffer = ByteBuffer.wrap("服务器响应".getBytes()); socketChannel.write(outgoingBuffer);
Fonction Java :
socketChannel.shutdownInput(); socketChannel.shutdownOutput(); socketChannel.close();
import java.nio.ByteBuffer; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; public class NioFunction { public static void main(String[] args) throws Exception { ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); serverSocketChannel.bind(new InetSocketAddress(9000)); serverSocketChannel.configureBlocking(false); while (true) { SocketChannel socketChannel = serverSocketChannel.accept(); if (socketChannel != null) { socketChannel.configureBlocking(false); ByteBuffer incomingBuffer = ByteBuffer.allocate(1024); int bytesRead = socketChannel.read(incomingBuffer); String message = new String(incomingBuffer.array(), 0, bytesRead); System.out.println("收到的消息:" + message); ByteBuffer outgoingBuffer = ByteBuffer.wrap("服务器响应".getBytes()); socketChannel.write(outgoingBuffer); socketChannel.close(); } } } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!