changeset 121:80ef604d09dc repcamp-2008-start

*** empty log message ***
author kono
date Tue, 26 Aug 2008 09:52:08 +0900
parents 99e598a1dbf8
children 790c8dd42a7b
files rep/ServerSample.java
diffstat 1 files changed, 69 insertions(+), 69 deletions(-) [+]
line wrap: on
line diff
--- a/rep/ServerSample.java	Thu Jan 17 07:29:54 2008 +0900
+++ b/rep/ServerSample.java	Tue Aug 26 09:52:08 2008 +0900
@@ -6,88 +6,88 @@
 
 public class ServerSample
 {
-public static void main(String[] argv)
-throws Exception
-{
-// ƒZƒŒƒNƒ^‚Ì—pˆÓ
-Selector selector = Selector.open();
+	public static void main(String[] argv)
+	throws Exception
+	{
+		// セレクタã®ç”¨æ„
+		Selector selector = Selector.open();
 
-// ƒT[ƒoƒ\ƒPƒbƒgƒ`ƒƒƒ“ƒlƒ‹‚ðì¬B5100”Ôƒ|[ƒg‚ðŽó•tƒ|[ƒg‚ÉŽw’è
-// i”ñƒuƒƒbƒNƒ‚[ƒh‚ÉÝ’èFd—vj
-ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
-serverSocketChannel.configureBlocking(false);
-serverSocketChannel.socket().bind(new InetSocketAddress(5100));
+		// サーãƒã‚½ã‚±ãƒƒãƒˆãƒãƒ£ãƒ³ãƒãƒ«ã‚’作æˆã€‚5100番ãƒãƒ¼ãƒˆã‚’å—付ãƒãƒ¼ãƒˆã«æŒ‡å®š
+		// (éžãƒ–ロックモードã«è¨­å®šï¼šé‡è¦ï¼‰
+		ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
+		serverSocketChannel.configureBlocking(false);
+		serverSocketChannel.socket().bind(new InetSocketAddress(5100));
 
-// ƒZƒŒƒNƒ^‚ɃT[ƒoƒ\ƒPƒbƒgƒ`ƒƒƒ“ƒlƒ‹‚ð“o˜^BƒT[ƒo‚Ö‚ÌŽó•t‚ðŠÄŽ‹
-serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
+		// セレクタã«ã‚µãƒ¼ãƒã‚½ã‚±ãƒƒãƒˆãƒãƒ£ãƒ³ãƒãƒ«ã‚’登録。サーãƒã¸ã®å—付を監視
+		serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
 
-// ƒZƒŒƒNƒ^‚ɃCƒxƒ“ƒg‚ª’Ê’m‚³‚ê‚邲‚ƂɈ—
-while (true) {
+		// セレクタã«ã‚¤ãƒ™ãƒ³ãƒˆãŒé€šçŸ¥ã•ã‚Œã‚‹ã”ã¨ã«å‡¦ç†
+		while (true) {
 
-// ƒZƒŒƒNƒ^‚ɃCƒxƒ“ƒg‚ª”­¶‚·‚é‚܂ŃuƒƒbƒN
-selector.select();
+			// セレクタã«ã‚¤ãƒ™ãƒ³ãƒˆãŒç™ºç”Ÿã™ã‚‹ã¾ã§ãƒ–ロック
+			selector.select();
 
-// Šl“¾‚µ‚½ƒCƒxƒ“ƒg‚²‚ƂɈ—‚ðŽÀs
-for (SelectionKey selectionKey : selector.selectedKeys()) {
+			// ç²å¾—ã—ãŸã‚¤ãƒ™ãƒ³ãƒˆã”ã¨ã«å‡¦ç†ã‚’実行
+			for (SelectionKey selectionKey : selector.selectedKeys()) {
 
-// ƒT[ƒo‚ÌŽó•tˆ—: 
-// ƒCƒxƒ“ƒg‚ªŽó•t‰Â”\‚Å‚ ‚éê‡AŽó‚¯•t‚¯‚é‚ׂ«‘ÎÛ‚ª‚ ‚ê‚Î
-// ƒZƒŒƒNƒ^‚Ɏ擾‚µ‚½ƒ\ƒPƒbƒgƒ`ƒƒƒ“ƒlƒ‹‚ð“o˜^
-if (selectionKey.isAcceptable()) {
+				// サーãƒã®å—付処ç†: 
+				// イベントãŒå—付å¯èƒ½ã§ã‚ã‚‹å ´åˆã€å—ã‘付ã‘ã‚‹ã¹ã対象ãŒã‚ã‚Œã°
+				// セレクタã«å–å¾—ã—ãŸã‚½ã‚±ãƒƒãƒˆãƒãƒ£ãƒ³ãƒãƒ«ã‚’登録
+				if (selectionKey.isAcceptable()) {
 
-// ƒT[ƒoƒ\ƒPƒbƒgƒ`ƒƒƒ“ƒlƒ‹‚©‚çƒ\ƒPƒbƒgƒ`ƒƒƒ“ƒlƒ‹‚ðŠl“¾
-// ƒ\ƒPƒbƒgƒ`ƒƒƒ“ƒlƒ‹‚ðŒo—R‚µ‚ăNƒ‰ƒCƒAƒ“ƒg‚Æ’ÊM‚Å‚«‚é
-SocketChannel socketChannel = serverSocketChannel.accept();
+					// サーãƒã‚½ã‚±ãƒƒãƒˆãƒãƒ£ãƒ³ãƒãƒ«ã‹ã‚‰ã‚½ã‚±ãƒƒãƒˆãƒãƒ£ãƒ³ãƒãƒ«ã‚’ç²å¾—
+					// ソケットãƒãƒ£ãƒ³ãƒãƒ«ã‚’経由ã—ã¦ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¨é€šä¿¡ã§ãã‚‹
+					SocketChannel socketChannel = serverSocketChannel.accept();
 
-// Ú‘±æ‚ª‚È‚­‚Ä‚à‚±‚±‚Ɉ—‚ª”ò‚Ô‚±‚Æ‚ª‚ ‚éB‘ÎÛ‚ª
-// null‚Ìꇂ͈—‚𔲂¯‚é
-if (null == socketChannel) continue;
+					// 接続先ãŒãªãã¦ã‚‚ã“ã“ã«å‡¦ç†ãŒé£›ã¶ã“ã¨ãŒã‚る。対象ãŒ
+					// nullã®å ´åˆã¯å‡¦ç†ã‚’抜ã‘ã‚‹
+					if (null == socketChannel) continue;
 
-// ƒ\ƒPƒbƒgƒ`ƒƒƒ“ƒlƒ‹‚ð”ñƒuƒƒbƒNƒ‚[ƒh‚ÉÝ’èid—vj‚µA
-// ƒZƒŒƒNƒ^‚É“Ç‚Ýž‚Ý‚ð‘ÎÛ‚Æ‚µ‚Ä“o˜^
-socketChannel.configureBlocking(false);
-socketChannel.register(selector, SelectionKey.OP_READ);
-socketChannel = null;
-}
+					// ソケットãƒãƒ£ãƒ³ãƒãƒ«ã‚’éžãƒ–ロックモードã«è¨­å®šï¼ˆé‡è¦ï¼‰ã—ã€
+					// セレクタã«èª­ã¿è¾¼ã¿ã‚’対象ã¨ã—ã¦ç™»éŒ²
+					socketChannel.configureBlocking(false);
+					socketChannel.register(selector, SelectionKey.OP_READ);
+					socketChannel = null;
+				}
 
-// ƒNƒ‰ƒCƒAƒ“ƒg‚Æ‚Ì’ÊMˆ—
-// “Çž‚݉”\‚Å‚ ‚éê‡A“à—e•¨‚ð“Ç‚Ý‚±‚ñ‚Å•W€o—Í‚É•\Ž¦B
-// ƒƒbƒZ[ƒW‚ðƒNƒ‰ƒCƒAƒ“ƒg‚É‘—M‚µ‚ÄAƒRƒlƒNƒVƒ‡ƒ“‚ðØ’fB
-// ƒZƒŒƒNƒ^‚©‚ç“o˜^‚ð‰ðœ
-else if (selectionKey.isReadable()) {
+				// クライアントã¨ã®é€šä¿¡å‡¦ç†
+				// 読込ã¿å¯èƒ½ã§ã‚ã‚‹å ´åˆã€å†…容物を読ã¿ã“ã‚“ã§æ¨™æº–出力ã«è¡¨ç¤ºã€‚
+				// メッセージをクライアントã«é€ä¿¡ã—ã¦ã€ã‚³ãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’切断。
+				// セレクタã‹ã‚‰ç™»éŒ²ã‚’解除
+				else if (selectionKey.isReadable()) {
 
-// “o˜^‚³‚ê‚Ä‚¢‚éƒ\ƒPƒbƒgƒ`ƒƒƒ“ƒlƒ‹‚ðŽæ“¾
-SocketChannel socketChannel = 
-(SocketChannel)selectionKey.channel();
+					// 登録ã•ã‚Œã¦ã„るソケットãƒãƒ£ãƒ³ãƒãƒ«ã‚’å–å¾—
+					SocketChannel socketChannel = 
+						(SocketChannel)selectionKey.channel();
 
-Charset charset = Charset.forName("US-ASCII");
-ByteBuffer byteBuffer = ByteBuffer.allocate(8192);
+					Charset charset = Charset.forName("US-ASCII");
+					ByteBuffer byteBuffer = ByteBuffer.allocate(8192);
 
-// ƒNƒ‰ƒCƒAƒ“ƒg‚©‚烃bƒZ[ƒW‚ÌŽóM
-switch (socketChannel.read(byteBuffer)) {
-case -1:
-// ƒNƒ‰ƒCƒAƒ“ƒg‘¤‚ªÚ‘±‚ðØ’f‚µ‚Ä‚¢‚½ê‡‚ÍAƒT[ƒo‚à
-// Ú‘±‚ðØ’fBƒZƒŒƒNƒ^‚©‚ç“o˜^‚ðíœ
-socketChannel.close();
-break;
-case 0:
-// “Ç‚Ýž‚ނׂ«ƒƒbƒZ[ƒW‚Í“Í‚¢‚Ä‚¢‚È‚¢‚̂ň—‚ð”ò‚΂·
-continue;
-default:
-// ƒNƒ‰ƒCƒAƒ“ƒg‚©‚烃bƒZ[ƒW‚ðŽæ“¾‚µA•W€o—Í‚Ö
-byteBuffer.flip();
-System.out.print("EEE: " + charset.decode(byteBuffer));
+					// クライアントã‹ã‚‰ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å—ä¿¡
+					switch (socketChannel.read(byteBuffer)) {
+					case -1:
+						// クライアントå´ãŒæŽ¥ç¶šã‚’切断ã—ã¦ã„ãŸå ´åˆã¯ã€ã‚µãƒ¼ãƒã‚‚
+						// 接続を切断。セレクタã‹ã‚‰ç™»éŒ²ã‚’削除
+						socketChannel.close();
+						break;
+					case 0:
+						// 読ã¿è¾¼ã‚€ã¹ãメッセージã¯å±Šã„ã¦ã„ãªã„ã®ã§å‡¦ç†ã‚’飛ã°ã™
+						continue;
+					default:
+						// クライアントã‹ã‚‰ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’å–å¾—ã—ã€æ¨™æº–出力ã¸
+						byteBuffer.flip();
+					System.out.print("EEE: " + charset.decode(byteBuffer));
 
-// ƒNƒ‰ƒCƒAƒ“ƒg‚ÖƒƒbƒZ[ƒW‚ð‘—M
-socketChannel.write(charset.encode("Good bye!\r\n"));
+					// クライアントã¸ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡
+					socketChannel.write(charset.encode("Good bye!\r\n"));
 
-// ƒNƒ‰ƒCƒAƒ“ƒg‚Æ‚ÌÚ‘±‚ðØ’fBƒZƒŒƒNƒ^‚©‚ç“o˜^‚ðíœ
-//socketChannel.close();
-break;
-}
-}
-System.out.println(selectionKey.toString());
-}
-}
-}
+					// クライアントã¨ã®æŽ¥ç¶šã‚’切断。セレクタã‹ã‚‰ç™»éŒ²ã‚’削除
+					//socketChannel.close();
+					break;
+					}
+				}
+				System.out.println(selectionKey.toString());
+			}
+		}
+	}
 }
\ No newline at end of file