91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在JAVA項目中實現一個TCP網絡通訊功能

發布時間:2020-11-30 16:50:49 來源:億速云 閱讀:122 作者:Leah 欄目:編程語言

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

具體如下:

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

由IETF的RFC 793定義,在簡化的計算機網絡OSI模型中,它完成第四層傳輸層所指定的功能。

基于TCP網絡通訊實現的類主要有服務器端的ServerSocket用客戶端的Socket。

通訊流程:

打開服務器,等待客戶端連接-->客戶端連接上服務器-->數據通訊。

代碼實現步驟:

1. 創建服務器端(ServerSocket)對象或客戶端(Socket)對象。
2. 建立起服務器與客戶端連接
3. 通過輸入輸出流進行文件(數據)通訊
4. 通訊結束 ,關閉資源 。

一個簡單的小例子,服務端:

public class SocketServer {
  public static void main(String[] args) {
    try {
      // 創建一個服務器ServerSocket,并指定端口號為5120
      ServerSocket mServerSocket = new ServerSocket(5120);
      // 等待客戶端連接
      Socket socket = mServerSocket.accept();
      // 連接上客戶端后,獲取客戶端輸入流信息
      InputStream is = socket.getInputStream();
      // 通過獲取緩沖數據方式來讀取文本信息
      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();
      // 收到客戶端信息后,回復客戶端信息
      OutputStream os = socket.getOutputStream();
      PrintWriter pw = new PrintWriter(os);
      pw.write("收到回復,我是服務端");
      pw.flush();
      // 關閉流通常放在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 {
      // 創建客戶端Socket,指定主機和端口
      Socket mSocket = new Socket("localhost", 5120);
      // 通過輸入流向服務器發數據
      OutputStream os = mSocket.getOutputStream();
      PrintWriter pw = new PrintWriter(os);
      pw.write("來自客戶端Socket的數據,你收到了嗎?");
      pw.flush();
      mSocket.shutdownOutput();
      // 收取服務端的回復信息
      InputStream is = mSocket.getInputStream();
      // 通過獲取緩沖數據方式來讀取文本信息
      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());
      // 關閉流通常放在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();
    }
  }
}

運行時,要先啟動服務端,然后啟動客記戶端,通常網絡通訊會與多線程交織在一起。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江津市| 德化县| 彰武县| 泸水县| 鄂托克旗| 微博| 仁布县| 壤塘县| 上高县| 临颍县| 墨玉县| 汶上县| 铁岭县| 贵州省| 吉木乃县| 松溪县| 柘荣县| 尉氏县| 宜川县| 丰原市| 通州市| 京山县| 南部县| 江北区| 仁怀市| 农安县| 桐城市| 张家口市| 普兰店市| 垣曲县| 兴和县| 郴州市| 加查县| 永新县| 吐鲁番市| 汶川县| 青浦区| 安康市| 邹平县| 疏附县| 平潭县|