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

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

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

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數(shù)據(jù)加載中……

    Java網(wǎng)絡(luò)編程從入門到精通(26):在服務(wù)端接收和發(fā)送數(shù)據(jù)

    本文為原創(chuàng),如需轉(zhuǎn)載,請注明作者和出處,謝謝!

    上一篇:Java網(wǎng)絡(luò)編程從入門到精通(25):創(chuàng)建ServerSocket對象

    在建立完ServerSocket對象后,通過accept方法返回的Socket對象,服務(wù)端就可以和客戶端進(jìn)行數(shù)據(jù)交互。

    Socket類和ServerSocket類都有兩個得到輸入輸出流的方法:getInputStreamgetOutputStream。對于Socket類而言,使用getInputStream方法得到的InputStream是從服務(wù)端獲取數(shù)據(jù),而getOutputStream方法得到的OutputStream是向服務(wù)端發(fā)送數(shù)據(jù)。而ServerSocketgetInputStreamgetOutputStream方法也類似。InputStream從客戶端讀取數(shù)據(jù),OutputStream向客戶端發(fā)送數(shù)據(jù)。下面的代碼是一個接收HTTP請求,并返回HTTP請求頭信息的程序,它演示了ServerSocket類如何讀取和發(fā)送來自客戶端的數(shù)據(jù)。

    package server;

    import java.net.*;
    import java.io.*;

    public class HttpEchoServer extends Thread
    {
        
    private Socket socket;
        
    public void run()
        {
            
    try
            {
                InputStreamReader isr 
    = new InputStreamReader(socket
                                .getInputStream());
                BufferedReader br 
    = new BufferedReader(isr);
                OutputStreamWriter osw 
    = new OutputStreamWriter(socket
                                .getOutputStream());
                osw.write(
    "HTTP/1.1 200 OK\r\n\r\n");
                String s 
    = "";
                
    while (!(s = br.readLine()).equals(""))
                    osw.write(
    "<html><body>" + s + "<br></body></html>");
                osw.flush();
                socket.close();
            }
            
    catch (Exception e)
            {
            }
        }
        
    public HttpEchoServer(Socket socket)
        {
            
    this.socket = socket;
        }
        
    public static void main(String[] args) throws Exception
        {
            ServerSocket serverSocket 
    = new ServerSocket(8888);
            System.out.println(
    "服務(wù)器已經(jīng)啟動,端口:8888");
            
    while (true)
            {
                Socket socket 
    = serverSocket.accept();
                
    new HttpEchoServer(socket).start();
            }
        }
    }

    編譯并運(yùn)行HttpEchoServer后,在IE的地址欄中輸入URLhttp://localhost:8888。輸出結(jié)果如圖1所示。


     

    圖1

        上面的代碼并未驗(yàn)證HTTP請求類型,因此,GETPOSTHEADHTTP請求都可以得到回應(yīng)。在接收客戶端請求后,只向客戶端輸出了一行HTTP響應(yīng)頭信息(包括響應(yīng)碼和HTTP版本號),對于HTTP響應(yīng)頭來說,這一行是必須有的,其他的頭字段都是可選的。上面的代碼每讀一行請求頭信息,就向客戶端寫一行響應(yīng)信息。最后使用了flush方法將輸出緩沖區(qū)中的內(nèi)容發(fā)送的客戶端。這是必須的,只要使用OutputStream,在最后就必須要調(diào)用flush方法(Socket類中使用OutputStream也是一樣)

    下一篇:
    Java網(wǎng)絡(luò)編程從入門到精通(27):關(guān)閉服務(wù)端連接





    Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2009-07-20 13:53 銀河使者 閱讀(3015) 評論(2)  編輯  收藏 所屬分類: java 原創(chuàng)網(wǎng)絡(luò)編程

    評論

    # re: Java網(wǎng)絡(luò)編程從入門到精通(26):在服務(wù)端接收和發(fā)送數(shù)據(jù)  回復(fù)  更多評論   

    謝謝!學(xué)到了
    2009-07-20 20:27 | 樂蜂網(wǎng)

    # re: Java網(wǎng)絡(luò)編程從入門到精通(26):在服務(wù)端接收和發(fā)送數(shù)據(jù)  回復(fù)  更多評論   

    br.readLine()讀到末尾是因該是null吧,為什么這里判斷的是!(s = br.readLine()).equals("")
    2015-05-14 10:02 | 胥亞波
    主站蜘蛛池模板: 2019中文字幕在线电影免费| 亚洲人成在线精品| 精品久久洲久久久久护士免费 | 日韩免费高清视频网站| 久久精品免费视频观看| 一级做a爰性色毛片免费| 亚洲高清国产拍精品熟女| 亚洲成a人片在线观看播放| 日本亚洲成高清一区二区三区 | 亚洲综合一区二区| 久久亚洲综合色一区二区三区| 亚洲国产小视频精品久久久三级 | 亚洲国产精品午夜电影| 亚洲妇熟XXXX妇色黄| 亚洲成片观看四虎永久| 国产成人精品免费直播 | 亚洲精品蜜夜内射| 亚洲人成77777在线观看网| 亚洲福利视频网站| 久久夜色精品国产噜噜亚洲AV| 亚洲精品午夜无码电影网| 国产av无码专区亚洲av果冻传媒| 国产网站免费观看| 国产一级高清视频免费看| 成人国产mv免费视频| 精品免费国产一区二区三区| 免费观看大片毛片| 拔擦拔擦8x华人免费久久| 国产精品酒店视频免费看| 国产免费爽爽视频免费可以看| 国产在线19禁免费观看| 四虎影视永久免费观看地址 | 精品久久久久久久久亚洲偷窥女厕| 亚洲高清视频在线| 亚洲精品无码高潮喷水A片软| 亚洲综合精品伊人久久| 欧美亚洲国产SUV| 免费看黄福利app导航看一下黄色录像| 美女被艹免费视频| 久久99精品免费一区二区| 99re8这里有精品热视频免费 |