Java中使用socket實現客戶端與服務端互動
阿新 • • 發佈:2018-12-29
Socket解釋:
網路上的兩個程式通過一個雙向的通訊連線實現資料的交換,這個連線的一端稱為一個socket。
Socket的英文原義是“孔”或“插座”。作為BSD UNIX的程序通訊機制,取後一種意思。通常也稱作"套接字",用於描述IP地址和埠,是一個通訊鏈的控制代碼,可以用來實現不同虛擬機器或不同計算機之間的通訊。在Internet上的主機一般運行了多個服務軟體,同時提供幾種服務。每種服務都開啟一個Socket,並繫結到一個埠上,不同的埠對應於不同的服務。Socket正如其英文原意那樣,像一個多孔插座。一臺主機猶如佈滿各種插座的房間,每個插座有一個編號,有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節目。 客戶軟體將插頭插到不同編號的插座,就可以得到不同的服務。1 try { 2 //建立繫結到特定埠的伺服器套接字 3 ServerSocket serverSocket=new ServerSocket(9999); 4 System.out.println("***伺服器即將啟動,等待客戶端連結***");5 //偵聽並接受到此套接字的連線 6 Socket socket=serverSocket.accept(); 7 //獲取輸入流 8 InputStream is=socket.getInputStream(); 9 //將位元組輸入流轉為字元輸入流 10 InputStreamReader isr=new InputStreamReader(is); 11 BufferedReader br=new BufferedReader(isr); 12 String str=null; 13 while((str=br.readLine())!=null){ 14 System.out.println("伺服器說:客戶端傳送了:"+str); 15 br.readLine(); 16 } 17 //此套接字的輸入流置於"流的末尾" 18 socket.shutdownInput(); 19 br.close(); 20 isr.close(); 21 is.close(); 22 } catch (IOException e) { 23 e.printStackTrace(); 24 }
Client端:
1 try { 2 Socket socket=new Socket("127.0.0.1",9999); 3 OutputStream os=socket.getOutputStream(); 4 PrintWriter print=new PrintWriter(os); 5 print.write("你好啊!伺服器!"); 6 print.close(); 7 os.close(); 8 } catch (Exception e) { 9 e.printStackTrace(); 10 }
首先需要啟動伺服器端,建立ServerSocket等待客戶端連線:
然後,啟動客戶端:
這樣,一個簡單的Socket通訊就實現了!