国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

利用Socket進(jìn)行Java網(wǎng)絡(luò)編程(一)

2019-11-18 10:45:54
字體:
供稿:網(wǎng)友

  作者: 郗旻
  Socket是網(wǎng)絡(luò)上運(yùn)行的兩個(gè)程序間雙向通訊的一端,它既可以接受請求,也可以發(fā)送請求,利用它可以較為方便的編寫網(wǎng)絡(luò)上數(shù)據(jù)的傳遞。在java中,有專門的Socket類來處理用戶的請求和響應(yīng)。利用Socket類的方法,就可以實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)之間的通訊。這里就介紹一下在Java中如何利用Socket進(jìn)行網(wǎng)絡(luò)編程。
    在Java中Socket可以理解為客戶端或者服務(wù)器端的一個(gè)非凡的對象,這個(gè)對象有兩個(gè)要害的方法,一個(gè)是getInputStream方法,另一個(gè)是getOutputStream方法。getInputStream方法可以得到一個(gè)輸入流,客戶端的Socket對象上的getInputStream方法得到的輸入流其實(shí)就是從服務(wù)器端發(fā)回的數(shù)據(jù)流。GetOutputStream方法得到一個(gè)輸出流,客戶端Socket對象上的getOutputStream方法返回的輸出流就是將要發(fā)送到服務(wù)器端的數(shù)據(jù)流,(其實(shí)是一個(gè)緩沖區(qū),暫時(shí)存儲(chǔ)將要發(fā)送過去的數(shù)據(jù))。
    程序可以對這些數(shù)據(jù)流根據(jù)需要進(jìn)行進(jìn)一步的封裝。本文的例子就對這些數(shù)據(jù)流進(jìn)行了一定的封裝(關(guān)于封裝可以參考Java中流的實(shí)現(xiàn)部分)。
    為了更好的說明問題,這里舉了一個(gè)網(wǎng)上對話的例子,客戶端啟動(dòng)以后,服務(wù)器會(huì)啟動(dòng)一個(gè)線程來與客戶進(jìn)行文字交流。
    要完成這個(gè)工作,需要完成三個(gè)部分的工作,以下依次說明:
    一、建立服務(wù)器類
    Java中有一個(gè)專門用來建立Socket服務(wù)器的類,名叫ServerSocket,可以用服務(wù)器需要使用的端口號(hào)作為參數(shù)來創(chuàng)建服務(wù)器對象。
  ServerSocket server = new ServerSocket(9998)
    這條語句創(chuàng)建了一個(gè)服務(wù)器對象,這個(gè)服務(wù)器使用9998號(hào)端口。當(dāng)一個(gè)客戶端程序建立一個(gè)Socket連接,所連接的端口號(hào)為9998時(shí),服務(wù)器對象server便響應(yīng)這個(gè)連接,并且server.accept()方法會(huì)創(chuàng)建一個(gè)Socket對象。服務(wù)器端便可以利用這個(gè)Socket對象與客戶進(jìn)行通訊。
  Socket incoming = server.accept()
    進(jìn)而得到輸入流和輸出流,并進(jìn)行封裝
  BufferedReader in = new BufferedReader(new
        InputStreamReader(incoming.getInputStream()));
  PRintWriter out = new PrintWriter(incoming.getOutputStream(),true);
  隨后,就可以使用in.readLine()方法得到客戶端的輸入,也可以使用out.println()方法向客戶端發(fā)送數(shù)據(jù)。從而可以根據(jù)程序的需要對客戶端的不同請求進(jìn)行回應(yīng)。
  在所有通訊結(jié)束以后應(yīng)該關(guān)閉這兩個(gè)數(shù)據(jù)流,關(guān)閉的順序是先關(guān)閉輸出流,再關(guān)閉輸入流,即使用
  out.close();
  in.close();

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桓仁| 罗山县| 鄂托克旗| 平江县| 常州市| 乐亭县| 公主岭市| 额敏县| 蒲江县| 隆化县| 宜都市| 资源县| 阿坝县| 东宁县| 巴东县| 泽州县| 伊春市| 柳林县| 水城县| 梅河口市| 出国| 河源市| 太仓市| 商城县| 同心县| 遂川县| 锦屏县| 鄂温| 乡宁县| 萍乡市| 红桥区| 海伦市| 牡丹江市| 玉田县| 望谟县| 靖江市| 天门市| 林西县| 法库县| 望奎县| 五常市|