摘要:編程之編程全套的基礎編程基礎及深入講解協議是面向連接的可靠的有序的以字節流的方式發送數據,通過三次握手方式建立連接,形成傳輸數據的通道,在連接中進行大量數據的傳輸,效率會稍低中基于協議實現網絡通信的類客戶端的類服務器端的類通信的步驟創建和打
Java Socket編程之TCP編程
全套的:https://www.yuque.com/shizhiy...
基礎:https://blog.51cto.com/wangdy/1588379
Java Socket編程基礎及深入講解:https://www.cnblogs.com/yiwangzhibujian/p/7107785.html
TCP協議是面向連接的、可靠的、有序的、以字節流的方式發送數據,通過三次握手方式建立連接,形成傳輸數據的通道,在連接中進行大量數據的傳輸,效率會稍低
Java中基于TCP協議實現網絡通信的類
客戶端的Socket類
服務器端的ServerSocket類
Socket通信的步驟
? ? ? ? ? ? ? ? ① 創建ServerSocket和Socket
? ? ? ? ? ? ? ? ② 打開連接到Socket的輸入/輸出流
? ? ? ? ? ? ? ? ③ 按照協議對Socket進行讀/寫操作
? ? ? ? ? ? ? ? ④ 關閉輸入輸出流、關閉Socket
服務器端:
? ? ? ? ? ? ? ?① 創建ServerSocket對象,綁定監聽端口
? ? ? ? ? ? ? ? ② 通過accept()方法監聽客戶端請求
? ? ? ? ? ? ? ? ③ 連接建立后,通過輸入流讀取客戶端發送的請求信息
? ? ? ? ? ? ? ? ④ 通過輸出流向客戶端發送鄉音信息
? ? ? ? ? ? ? ? ⑤ 關閉相關資源
**
/** * 基于TCP協議的Socket通信,實現用戶登錄,服務端 */ //1、創建一個服務器端Socket,即ServerSocket,指定綁定的端口,并監聽此端口 ServerSocket serverSocket = new ServerSocket(10086);//1024-65535的某個端口 //2、調用accept()方法開始監聽,等待客戶端的連接 Socket socket = serverSocket.accept(); //3、獲取輸入流,并讀取客戶端信息 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String info = null; while ((info = br.readLine()) != null) { System.out.println("我是服務器,客戶端說:" + info); } socket.shutdownInput();//關閉輸入流 //4、獲取輸出流,響應客戶端的請求 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.write("歡迎您!"); pw.flush(); //5、關閉資源 pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close();
客戶端:
? ? ? ? ? ? ? ? ① 創建Socket對象,指明需要連接的服務器的地址和端口號
? ? ? ? ? ? ? ? ② 連接建立后,通過輸出流想服務器端發送請求信息
? ? ? ? ? ? ? ? ③ 通過輸入流獲取服務器響應的信息
? ? ? ? ? ? ? ? ④ 關閉響應資源?
//客戶端 //1、創建客戶端Socket,指定服務器地址和端口 Socket socket =newSocket("localhost",10086); //2、獲取輸出流,向服務器端發送信息 OutputStream os = socket.getOutputStream();//字節輸出流 PrintWriter pw =newPrintWriter(os);//將輸出流包裝成打印流 pw.write("用戶名:admin;密碼:123"); pw.flush(); socket.shutdownOutput(); //3、獲取輸入流,并讀取服務器端的響應信息 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String info = null; while((info=br.readLine())!null){ System.out.println("我是客戶端,服務器說:"+info); } //4、關閉資源 br.close(); is.close(); pw.close(); os.close(); socket.close();
應用多線程實現服務器與多客戶端之間的通信
? ? ? ? ? ? ? ① 服務器端創建ServerSocket,循環調用accept()等待客戶端連接
? ? ? ? ? ? ? ② 客戶端創建一個socket并請求和服務器端連接
? ? ? ? ? ? ? ③ 服務器端接受苦讀段請求,創建socket與該客戶建立專線連接
? ? ? ? ? ? ? ④ 建立連接的兩個socket在一個多帶帶的線程上對話
? ? ? ? ? ? ? ⑤ 服務器端繼續等待新的連接 ? ??
//服務器線程處理 //和本線程相關的socket Socket socket =null; // public serverThread(Socket socket){ this.socket = socket; } publicvoid run(){ //服務器處理代碼 } //============================================ //服務器代碼 ServerSocket serverSocket =newServerSocket(10086); Socket socket =null; int count =0;//記錄客戶端的數量 while(true){ socket = serverScoket.accept(); ServerThread serverThread =newServerThread(socket); serverThread.start(); count++; System.out.println("客戶端連接的數量:"+count); }
[鏈接]()
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74377.html
摘要:如地址端口號組成了所謂的,是網絡上運行的程序之間雙向通信鏈路的終結點,是和的基礎套接字網絡上具有唯一標識的地址和端口組合在一起才能構成唯一能識別的標識符套接字。 更多物聯網高并發編程知識請移步:https://www.yuque.com/shizhiy... Java Socket編程之常識網絡基礎知識 網絡基礎知識(參考計算機網絡)? 《TCP/IP協議棧及OSI參考模型詳解》? ...
摘要:面向字節流流,指的是流入到進程或從進程流出的字符序列。即收到連接信息后向返回確認信息第三次握手客戶端收到服務器的報文段,并向服務器發送報文段。 前言 Socket的使用在 Android網絡編程中非常重要 今天我將帶大家全面了解 Socket 及 其使用方法 目錄 showImg(https://segmentfault.com/img/remote/14600000113508...
摘要:如果你想體驗原味編程,用開頭的比較適合否則建議使用流函數。有關流的知識,請參考本人之前的博文回顧之流。接下來我們用流函數實現一個簡單的客戶端和服務端。流函數中的和兩個函數是我們想要的。本文目的是簡要介紹中的編程,行文到此已經達到目的。 轉載請注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎 web請求 cookie w...
摘要:構造函數默認空閑的最大連接數為個,的時間為秒通過構造函數可以看出默認的空閑的最大連接數為個,的時間為秒。實例化實例化是在實例化時進行的在的構造函數中調用了省略省略緩存操作提供對進行操作的方法分別為和幾個操作。 1.引子 在了解OkHttp的復用連接池之前,我們首先要了解幾個概念。 TCP三次握手 通常我們進行HTTP連接網絡的時候我們會進行TCP的三次握手,然后傳輸數據,然后再釋放連接...
閱讀 4581·2021-09-10 11:22
閱讀 538·2019-08-30 11:17
閱讀 2573·2019-08-30 11:03
閱讀 437·2019-08-29 11:18
閱讀 3462·2019-08-28 17:59
閱讀 3225·2019-08-26 13:40
閱讀 3169·2019-08-26 10:29
閱讀 1142·2019-08-26 10:14