<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 | 胥亞波
    主站蜘蛛池模板: 久久久久久夜精品精品免费啦| 女人18一级毛片免费观看| 久久久精品免费视频| 2020因为爱你带字幕免费观看全集| 亚洲精品久久久www| 男女作爱免费网站| 相泽亚洲一区中文字幕| 亚洲精品中文字幕无乱码麻豆| 真人做人试看60分钟免费视频| 成人亚洲国产va天堂| 国产精品久久久久影院免费| 精品视频免费在线| JLZZJLZZ亚洲乱熟无码| 国产又黄又爽胸又大免费视频| 久久精品国产亚洲AV麻豆不卡| 粉色视频成年免费人15次| 全亚洲最新黄色特级网站| 三级毛片在线免费观看| 午夜亚洲www湿好大| 久青草视频97国内免费影视| 亚洲不卡av不卡一区二区| 曰批全过程免费视频播放网站| 亚洲国产成人99精品激情在线| 精品国产免费观看久久久| 一级毛片免费播放男男| 久久青草亚洲AV无码麻豆| 91免费播放人人爽人人快乐| 亚洲AV无码成人网站在线观看| 久草在视频免费福利| 亚洲精品在线免费观看| 成年女人免费视频播放77777| 久久久亚洲欧洲日产国码二区| 视频免费在线观看| 亚洲中文字幕伊人久久无码| 久久精品无码精品免费专区| 亚洲乱码一二三四区麻豆| av大片在线无码免费| 美女免费精品高清毛片在线视| 午夜小视频免费观看| 大地资源中文在线观看免费版 | 免费观看的a级毛片的网站|