怎么在JAVA項(xiàng)目中實(shí)現(xiàn)一個TCP網(wǎng)絡(luò)通訊功能

怎么在JAVA項(xiàng)目中實(shí)現(xiàn)一個TCP網(wǎng)絡(luò)通訊功能?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司是一家網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè),提供網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,網(wǎng)站制作,建網(wǎng)站,專業(yè)公司,網(wǎng)站開發(fā)公司,從2013年創(chuàng)立是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計制作,前端開發(fā),后臺程序制作以及后期項(xiàng)目運(yùn)營并提出專業(yè)建議和思路。

具體如下:

TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。

由IETF的RFC 793定義,在簡化的計算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能。

基于TCP網(wǎng)絡(luò)通訊實(shí)現(xiàn)的類主要有服務(wù)器端的ServerSocket用客戶端的Socket。

通訊流程:

打開服務(wù)器,等待客戶端連接-->客戶端連接上服務(wù)器-->數(shù)據(jù)通訊。

代碼實(shí)現(xiàn)步驟:

1. 創(chuàng)建服務(wù)器端(ServerSocket)對象或客戶端(Socket)對象。
2. 建立起服務(wù)器與客戶端連接
3. 通過輸入輸出流進(jìn)行文件(數(shù)據(jù))通訊
4. 通訊結(jié)束 ,關(guān)閉資源 。

一個簡單的小例子,服務(wù)端:

public class SocketServer {
  public static void main(String[] args) {
    try {
      // 創(chuàng)建一個服務(wù)器ServerSocket,并指定端口號為5120
      ServerSocket mServerSocket = new ServerSocket(5120);
      // 等待客戶端連接
      Socket socket = mServerSocket.accept();
      // 連接上客戶端后,獲取客戶端輸入流信息
      InputStream is = socket.getInputStream();
      // 通過獲取緩沖數(shù)據(jù)方式來讀取文本信息
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      // 獲取文本信息
      String line;
      StringBuffer sb = new StringBuffer();
      while ((line = br.readLine()) != null) {
        sb.append(line);
      }
      System.out.println(sb.toString());
      socket.shutdownInput();
      // 收到客戶端信息后,回復(fù)客戶端信息
      OutputStream os = socket.getOutputStream();
      PrintWriter pw = new PrintWriter(os);
      pw.write("收到回復(fù),我是服務(wù)端");
      pw.flush();
      // 關(guān)閉流通常放在finally中操作
      os.close();
      br.close();
      is.close();
      pw.close();
      socket.close();
      mServerSocket.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

客戶端:

public class ClientSocket {
  public static void main(String[] args) {
    try {
      // 創(chuàng)建客戶端Socket,指定主機(jī)和端口
      Socket mSocket = new Socket("localhost", 5120);
      // 通過輸入流向服務(wù)器發(fā)數(shù)據(jù)
      OutputStream os = mSocket.getOutputStream();
      PrintWriter pw = new PrintWriter(os);
      pw.write("來自客戶端Socket的數(shù)據(jù),你收到了嗎?");
      pw.flush();
      mSocket.shutdownOutput();
      // 收取服務(wù)端的回復(fù)信息
      InputStream is = mSocket.getInputStream();
      // 通過獲取緩沖數(shù)據(jù)方式來讀取文本信息
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      // 獲取文本信息
      String line;
      StringBuffer sb = new StringBuffer();
      while ((line = br.readLine()) != null) {
        sb.append(line);
      }
      System.out.println(sb.toString());
      // 關(guān)閉流通常放在finally中操作
      br.close();
      is.close();
      pw.close();
      os.close();
      mSocket.close();
    } catch (UnknownHostException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

運(yùn)行時,要先啟動服務(wù)端,然后啟動客記戶端,通常網(wǎng)絡(luò)通訊會與多線程交織在一起。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

文章名稱:怎么在JAVA項(xiàng)目中實(shí)現(xiàn)一個TCP網(wǎng)絡(luò)通訊功能
文章鏈接:http://muchs.cn/article0/jophio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、企業(yè)建站、關(guān)鍵詞優(yōu)化、網(wǎng)站排名、品牌網(wǎng)站設(shè)計、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作