一、一個簡單的socket通訊例項(TCP)
阿新 • • 發佈:2018-11-07
1.服務端程式碼
import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * 類功能描述:先啟動伺服器端,再啟動客戶端 * * @author:*** * @createTime:2018/11/5 16:02 */ public class Server { public static void main(String[] args) { try { //1.建立伺服器socket 指定監聽埠 ServerSocket serverSocket = new ServerSocket(18080); //2.呼叫accept()開始監聽,等待客戶的連線 System.out.println("---------伺服器即將啟動,等待客戶端連線---------"); Socket socket = serverSocket.accept(); //3.讀取客戶端傳送資訊 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println("接收到客戶端傳送的訊息為:" + br.readLine()); socket.shutdownInput(); //4.推送客戶端請求 PrintWriter pw = new PrintWriter(socket.getOutputStream()); pw.write("response"); pw.flush(); socket.shutdownOutput(); //5.關閉連線 br.close(); pw.close(); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
2.客戶端程式碼
import java.io.*; import java.net.Socket; /** * 類功能描述:客戶端 * * @author:*** * @createTime:2018/11/5 16:03 */ public class Client { public static void main(String[] args) { try { //1.建立客戶端socket,指定伺服器地址和埠 Socket socket = new Socket("127.0.0.1", 18080); //2.向伺服器傳送資訊 PrintWriter pw = new PrintWriter(socket.getOutputStream()); pw.write("request"); pw.flush(); socket.shutdownOutput(); //3.讀取伺服器推送資訊 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println("接收到伺服器推送的訊息為:" + br.readLine()); socket.shutdownInput(); //4.關閉連線 br.close(); pw.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }