<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    博客已轉(zhuǎn)到HuJinPu 's blog

    http://blog.csdn.net/hujinpu

    首頁 新隨筆 聯(lián)系 聚合 管理
      24 Posts :: 0 Stories :: 25 Comments :: 0 Trackbacks

    關(guān)于流

    我一直對流都有點(diǎn)暈暈的,今天基本算搞清楚了所以然,所以在這里寫出,一來為了記憶,一來也希望能對和我一樣在這里有點(diǎn)模糊的一點(diǎn)幫助。(呵呵,不會就我一個人這么倒霉吧?)?

    輸入流:此流對應(yīng)于鍵盤輸入或者由主機(jī)環(huán)境或用戶指定的另一個輸入源

    超類: InputStream (System.in 就屬于這類 )

    輸出流:此流對應(yīng)于顯示器輸出或者由主機(jī)環(huán)境或用戶指定的另一個輸出目標(biāo)。

    超類: OutputStream (System.out 就屬于這類。其實(shí) System.err 也是間接屬于它 )

    ?

    一切都是流!

    看一段程序

    ?

    ?1 /*
    ?2 ?*?ThreadedEchoServer.java
    ?3 ?*
    ?4 ?*?Created?on?2006年10月14日,?上午11:57
    ?5 ? */

    ?6
    ?7 package ?corejava;
    ?8
    ?9 import ?java.io.IOException;
    10 import ?java.io.InputStream;
    11 import ?java.io.OutputStream;
    12 import ?java.io.PrintWriter;
    13 import ?java.net.ServerSocket;
    14 import ?java.net.Socket;
    15 import ?java.util.Scanner;
    16
    17 /**
    18 ?*
    19 ?*? @author ?livahu
    20 ? */

    21 public ? class ?ThreadedEchoServer? {
    22 ????
    23 ???? /** ?Creates?a?new?instance?of?ThreadedEchoServer? */
    24 ???? public ?ThreadedEchoServer()? {
    25 ????}

    26 ????
    27 ???? public ? static ? void ?main(String[]?args)? {
    28 ???????? try ? {
    29 ???????????? int ?i? = ? 1 ;
    30 ????????????ServerSocket?s? = ? new ?ServerSocket( 8189 );
    31 ????????????
    32 ???????????? while ?( true )? {
    33 ????????????????Socket?incoming? = ?s.accept();
    34 ????????????????System.out.println( " Spawning? " ? + ?i);
    35 ????????????????Runnable?r? = ? new ?ThreadedEchoHandler(incoming,?i);
    36 ????????????????Thread?t? = ? new ?Thread(r);
    37 ????????????????t.start();
    38 ????????????????i ++ ;
    39 ????????????}

    40 ????????}
    ? catch ?(IOException?ex)? {
    41 ????????????ex.printStackTrace();
    42 ????????}

    43 ????}

    44 }

    45
    46 class ?ThreadedEchoHandler? implements ?Runnable? {
    47 ???? private ?Socket?incoming;
    48 ???? private ? int ?counter;
    49 ????
    50 ???? public ?ThreadedEchoHandler(Socket?i,? int ?c)? {
    51 ????????incoming? = ?i;
    52 ????????counter? = ?c;
    53 ????}

    54 ????
    55 ???? public ? void ?run()? {
    56 ???????? try ? {
    57 ???????????? try ? {
    58 ????????????????InputStream?inStream? = ?incoming.getInputStream();
    59 ????????????????OutputStream?outStream? = ?incoming.getOutputStream();
    60 ????????????????
    61 ????????????????Scanner?in? = ? new ?Scanner(inStream);
    62 ????????????????PrintWriter?out? = ? new ?PrintWriter(outStream,? true );
    63 ????????????????out.println( " Hello!?Enter?BYE?to?exit. " );
    64 ????????????????
    65 ???????????????? boolean ?done? = ? false ;
    66 ???????????????? while ?( ! done? && ?in.hasNextLine())? {
    67 ????????????????????String?line? = ?in.nextLine();
    68 ????????????????????out.println( " Echo:? " ? + ?line);
    69 ???????????????????? if ?(line.trim().equals( " BYE " ))
    70 ????????????????????????done? = ? true ;
    71 ????????????????}

    72 ????????????}
    ? finally ? {
    73 ????????????????incoming.close();
    74 ????????????????
    75 ????????????}

    76 ????????}
    ? catch ?(IOException?ex)? {
    77 ????????????ex.printStackTrace();
    78 ????????}

    79 ????}

    80 ????
    81 }

    82

    ?

    我們來分析其中一段?
    ?????????????????InputStream inStream = incoming.getInputStream();

    ??????????????? OutputStream outStream = incoming.getOutputStream();

    ???????????????

    ??????????????? Scanner in = new Scanner(inStream);

    ??????????????? PrintWriter out = new PrintWriter(outStream, true);

    ??????????????? out.println("Hello! Enter BYE to exit.");

    ?

    incoming?是一個Socket對象,getInputStream()方法返回一個InputStream對象,用于接受用戶從文件或者鍵盤或者其它源的輸入。而getOutputStream() 方法用來返回一個OutputStream對象,用來得到一個Socket的輸出流,再用PrintWriter包裝它(或叫結(jié)合產(chǎn)生過濾流)為了更方便的輸出。利用out對象的println(String s)方法,我們可以把s的數(shù)據(jù)輸出到out的緩沖區(qū)里面,然后如果數(shù)據(jù)滿了緩沖區(qū)自動經(jīng)過底層流輸出到顯示器或者由主機(jī)環(huán)境或用戶指定的另一個輸出目標(biāo),這里就是telnet應(yīng)用程序窗口,而不是command控制臺,如果數(shù)據(jù)未寫滿緩沖區(qū)println()也會自動調(diào)用flush()方法刷新緩沖區(qū),輸出數(shù)據(jù)。

    ?

    posted on 2006-10-14 18:22 livahu 閱讀(351) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 人妻视频一区二区三区免费| 一区二区三区在线观看免费| 亚洲国产成人久久精品影视| 波多野结衣久久高清免费| 91视频免费网址| 三年片在线观看免费| 国产成人亚洲综合无| 亚洲午夜精品久久久久久app| 亚洲国产二区三区久久| 亚洲国产一区明星换脸| 日本免费人成黄页在线观看视频| 亚洲网站在线免费观看| 色欲A∨无码蜜臀AV免费播 | 五月天婷婷免费视频| 亚洲中文无码亚洲人成影院| 亚洲福利电影在线观看| 久久亚洲精品中文字幕| 亚洲av无码国产精品色午夜字幕 | 亚洲一级视频在线观看| 亚洲五月激情综合图片区| 亚洲AV无码一区二区三区系列| 久久久青草青青国产亚洲免观| www国产亚洲精品久久久日本| 国产午夜鲁丝片AV无码免费| 成人免费视频软件网站| 一个人在线观看视频免费| 国内精自视频品线六区免费| xxxxx免费视频| 国产成人免费高清激情明星| 久久久久久精品成人免费图片| 久9热免费精品视频在线观看| 国产免费一区二区三区在线观看| 中文字幕a∨在线乱码免费看| 中文字幕乱码系列免费| 99久久免费国产精精品| 久久久久免费精品国产| 国产猛男猛女超爽免费视频| 91福利视频免费| 国产四虎免费精品视频| 无码人妻一区二区三区免费| 国内外成人免费视频|