開發網絡通訊軟件,如QQ,阿里旺旺等即時通信軟件時,Socket通訊是必備的基礎知識,今天跟你們談談Socket通訊中TCP方式通訊的軟件開發步驟及主要代碼講解:html
第一步:開發服務器端程序Server.java,源代碼以下:java
package T16; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class Server { //服務器端程序 public static void main(String[] args) { /** * 1.建立服務器端ServerSocket,指定端口,有多塊網卡時能夠指定IP * 參數1:端口 * 參數2:等待排隊的客戶端數量 */ try { //1.建立服務器端ServerSocket ServerSocket serverSocket = new ServerSocket(8888,5); System.out.println("服務器啓動成功:"+serverSocket.toString()); //2.等待客戶鏈接 Socket clientSocket = serverSocket.accept(); System.out.println("有客戶來,請接客..........."); //3.綁定輸入流 InputStream is = clientSocket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); //4.綁定輸出流 OutputStream os = clientSocket.getOutputStream(); PrintStream ps = new PrintStream(os); //5.接收數據 System.out.println("服務器端接收:"+br.readLine()); //6.發送數據 String str = "歡迎鏈接到本服務器."; ps.println(str); //7.關閉socket通訊 clientSocket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
第二步:開發客戶端程序Client.java,源代碼以下:web
package T16; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Calendar; public class Client { /** * 客戶端程序: * 1.指定服務器的IP地址; * 2.指定服務器的端口; * * */ public static void main(String[] args) { try { //1.建立客戶端Socket; Socket socket = new Socket("127.0.0.1",8888); System.out.println("鏈接服務器成功...."); //2.綁定輸入輸出流 OutputStream os = socket.getOutputStream(); PrintStream ps = new PrintStream(os); InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); //3.發送數據 ps.println("我是客戶端,請求鏈接..."); //4.接收數據 System.out.println("客戶端接收服務器數據:"+br.readLine()); //5.關閉Socket socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
第三步:先運行服務器端程序,再運行客戶端程序,能夠看到網絡傳輸後的打印結果數據庫
說明:該程序是一個比較簡單的入門級代碼,整個程序只能進行一次網絡通訊,若是須要作成一個能夠不斷的通訊軟件的軟件,還要用到多線程,IO流操做,數據庫操做等諸多技術綜合應用。服務器
講師課堂連接:https://edu.51cto.com/lecturer/8307455.html多線程
若是你們有興趣能夠看看個人 java從入門到精通+QQ即時通信軟件項目實訓的教學視頻,連接地址:http://edu.51cto.com/course/6946.html socket