Java NIO ѧϰ±Ê¼Ç SocketChannel
ΪÁ˽øÐзÇ×èÈûµÄsocketͨÐÅ£¬java nioÌṩChannel¸ÅÄîµÄʵÏÖ¡£Channel¸ÅÄîÒÔÇø±ðÓÚ´«Í³µÄ»ùÓÚÁ÷¸ÅÄîµÄIO¡£ÊÂʵÉÏChannel¸ÅÄîµÄIO¼È°üÀ¨·Ç×èÈûʽµÄIOÒ²°üÀ¨×èÈûʽIO¡£ÒªChannelÍê³É·Ç×èÈûʽIOÐèҪʵÏÖSelectableChannel½Ó¿Ú£¬ÓëSelector¹ØÁªÊ¹Óá£SocketChannel¾ÍÊÇÕâÑùÒ»¸öSelectableChannel¡£
ÓÉÓÚ£¬selector»úÖÆ±¾ÉíÉæ¼°¶àÏ̵߳ÄÄÚÈÝ£¬ÓëChannel¹ØÁªÊ¹ÓýÏΪ¸´ÔÓ£»ËùÒÔÕâÀïÖ»ÒÔÆ¬¶Ï·½Ê½£¬Õë¶ÔSocketChannelµÄ¹¦ÄܽøÐÐ˵Ã÷¼òҪ˵Ã÷¡£
1¡£´´½¨·þÎñ¶ËµÄServerSocketChannel
¹ØÁªµÄServerSocket¿ÉÒÔÕìÌýÒ»¸öport¡£
ServerSocketChannel sschannel;
...
sschannel = ServerSocketChannel.open();
//ÉèÖÃΪno block·½Ê½¹¤×÷
sschannel.configureBlocking(false);
//¹ØÁªµÄserver-socket¿ªÊ¼ÕìÌý
address = new InetSocketAddress(port);
ServerSocket ss = sschannel.socket();
ss.bind(address);
2¡£½«ServerSocketChannel×¢²á(°ï¶¨)µ½Ò»¸öselectorÓÃÓڵȴýÍâÀ´socketÁ¬½Ó¡£
µ±Ò»¸öserver socket channelµÃµ½Ò»¸öÍⲿsocketÁ¬½Óʱ£¬¿ÉÒÔ½«Ò»¸öµ×²ãÁ¬½Ó´´½¨ÎªÒ»¸öSocketChannelʵÀý¡£ÔÙ½«Õâ¸öSocketChannell×¢²á(°ï¶¨)µ½Ò»¸öselectorÓÃÓÚ¾ßÌåIO¡£
//server socket channel×¢²áµ½selector
sschannel.register(selector, SelectionKey.OP_ACCEPT);
...
// µ±Ò»¸öserver socket channelµÃµ½Ò»¸öÍⲿsocketÁ¬½Óʱ
// ¿ÉÒ԰ѸõײãÁ¬½Ó´´½¨³öÒ»¸ö SocketChannel
SocketChannel sc = ssc.accept();
sc.configureBlocking(false); //ÉèÖÃΪ·Ç×èÈû·½Ê½
// ½«SocketChannel ×¢²áµ½Ò»¸öselectorÓÃÓÚIO
sc.register(selector, SelectionKey.OP_READ, request);
3¡£µ±SocketChannel¿ÉÒÔ¶ÁÈ¡»òд³öʱÔò¿ÉÒÔÓÃSocketChannel µÄ·½·¨½øÐÐIO¡£
¶ÁÈ¡£º
ByteBuffer buffer = ByteBuffer.allocate(BUFFER_SIZE);
buffer.clear();
// ¾ßÌåµÄ¶ÁÈ¡¶¯×÷£¬sc½«µ×²ãsocket»º´æÊý¾ÝдÊäÈëbytebuffer¶ÔÏó¡£
int n = sc.read(buffer);
//¶ÁÈ¡Êý¾ÝºóµÄ¼¸ÖÖÇé¿ö
if(n < 0){
//¶ÁÈ¡Êý¾Ýʧ°Ü£¬socketÁ¬½Ó¿ÉÄÜÒѾ¶Ï¿ª¡£
...
}else if(n > 0){
//¾ßÌå´¦Àíbuffer¶ÔÏó
...
}else{
//n == 0µÄÇé¿ö
}
д³ö£º
ByteBuffer buffer = ByteBuffer.allocate(BUFFER_SIZE);
...
// Ìî³äbuffer
buffer.clear();
buffer.put(data);
buffer.filp();
// ¾ßÌåµÄд³ö
sc.write(buffer);
4¡
Ïà¹ØÎĵµ£º
È«ÆÁ¶Àռģʽ
¾³£Ê¹ÓÃDirectX APIµÄ³ÌÐòÔ±¿ÉÄܶÔÈ«ÆÁ¶ÀռģʽÒѾºÜÊìϤÁË ¡£ËüÔÊÐí³ÌÐòԱͨ¹ýÐü¹Ò²Ù×÷ϵͳÀ´Ö±½ÓÔÚÆÁÄ»ÉϽøÐлæÖÆ¡£ÔÚ´«Í³µÄJava GUI ³ÌÐòÖУ¬ AWT ͨ¹ýʼþ·ÖÅÉÏ̺߳ÍÔÚÊʵ±µÄʱºòµ÷ÓÃ×é¼þµÄpaint()·½·¨À´´«ËÍÀ´×Ô²Ù×÷ϵͳµÄpaintʼþ¡£ÔÚÈ«ÆÁ¶ÀռģʽӦÓÃÖÐÄã¿ÉÒÔͨ¹ý³ÌÐò½øÐлæÖÆ¡£ ÁíÍâ ......
< type="text/javascript"> ÖÚËùÖÜÖª£¬ÔÚ³ÌÐò¿ª·¢ÖУ¬ÄÑÃâ»áÓöµ½ÐèҪƥÅä¡¢²éÕÒ¡¢Ìæ»»¡¢ÅжÏ×Ö·û´®µÄÇé¿ö·¢Éú£¬¶øÕâЩÇé¿öÓÐʱÓֱȽϸ´ÔÓ£¬Èç¹ûÓô¿±àÂ뷽ʽ½â¾ö£¬ÍùÍù»áÀ˷ѳÌÐòÔ±µÄʱ¼ä¼°¾«Á¦¡£Òò´Ë£¬Ñ§Ï°¼°Ê¹ÓÃÕýÔò±í´ïʽ£¬±ã³ÉÁ˽â¾öÕâһì¶ÜµÄÖ÷ÒªÊֶΡ£
´ó ¼Ò¶¼ÖªµÀ£¬ÕýÔò±í´ïʽÊÇÒ»ÖÖ¿ÉÒÔÓÃÓÚÄ£Ê ......
(2010.02.12) ÐÇÐÇСÕòv0.3 ¶¨ÆÚ¸üÐÂ
ÉùÃ÷£ºÓÎÏ·ËùÓÐËØ²ÄÀ´×ÔÍøÂ磬ÉÙ²¿·ÖÔ´Âë²Î¿¼Loonframework¿ò¼Ü
»ù±¾²Ù×÷£º
ÒÆ¶¯£º← → ↓ ↑
¶Ô»°£º¿Õ¸ñ¼ü
¸üÐÂÈÕÖ¾
2010.02.12 v0.3:
¹¦ÄÜÌí¼Ó:±êÌâ²Ëµ¥,³¡¾°Çл»(¿ÉÒÔ½øÎÝÀ²)
2010.02.11 v0.2:
¹¦ÄÜÌí¼Ó:NPC×ÔÓÉÐÐ×߻Ự£¬±³¾°ÒôÀÖ
2010.02.06 v0 ......
javaµÃµ½µ±Ç°Ê±¼ä
Java»ù´¡ 2009-06-02 21:34:18 ÔĶÁ1289 ÆÀÂÛ0 ×ֺţº´óÖÐС
//String nowTime=new SimpleDateFormat("yyyyMMddHHmm").format(new java.util.Date());
//System.out.println(nowTime);
import java.text.Sim ......
Ò»¡¢Java³ÌÐò×é³É
java³ÌÐòÊÇÓÉÀà×é³ÉµÄ£¬ÎļþµÄÀàÐÍÊÇ*.java¡£Ò»¸öjavaÎļþµÄ×é³ÉÈçÏ£º
public class MyJava {
}
Õâ¾ÍÊÇÒ»¸ö×î¼òµ¥µÄjavaÀà¡£Õâ¾ä»°µÄ×÷ÓþÍÊÇÉùÃ÷Ò»¸öÀ࣬
public ·ÃÎÊÐÞ ......