Socket通信實現步驟
阿新 • • 發佈:2018-12-21
clas 網絡連接 shu lin 接受 null red stack sage
public class Server { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(8888); System.out.println("服務器啟動中...."); //accept()是在一個套接口接受的一個連接。accept()是c語言中網絡編程的重要的函數, //本函數從s的等待連接隊列中抽取第一個連接,創建一個與s同類的新的套接口並返回句柄。Socket socket = serverSocket.accept();//獲取Socket InputStream is = socket.getInputStream();//獲取輸入流 InputStreamReader isr = new InputStreamReader(is);//InputStreamReader類是從字節流到字符流的橋接器 BufferedReader br = new BufferedReader(isr);//緩沖流 System.out.println("客戶端數據" + br.readLine()); String info= null; while((info = br.readLine()) != null){ System.out.println("客戶端傳遞的信息" + info); } socket.shutdownInput();//shutdownInput和shutdownOutput只關閉相應的輸入、輸出流,不會同時關閉網絡連接的功能。 OutputStream os = socket.getOutputStream(); PrintWriter pw= new PrintWriter(os); pw.write("歡迎您!!"); pw.flush();//flush()是清空,而不是刷新 將緩沖區的內容輸出 pw.close(); os.close(); br.close(); isr.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); } } }
public class Client { public static void main(String[] args) { try { Socket socket = new Socket("localhost", 8888); System.out.println("客戶端啟動中...."); OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.write("admin"); pw.flush(); socket.shutdownOutput(); InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String info = null; while((info = br.readLine()) != null){ System.out.println("服務端返回的信息" + info); } os.close(); pw.close(); is.close(); br.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } }
Socket通信實現步驟