通過輸入流來讀取客戶端信息,相應的時候通過輸出流來實現。
服務端類的代碼:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.logging.Level;import java.util.logging.Logger;/** * * @author whn6325689 */public class server {//服務器端public static void main(String[] args) {try {//1.創建一個服務器端Socket,即serverSocket,指定綁定的端口,並監聽此端口。 ServerSocket serverSocket=new ServerSocket(8888);//2.調用serverSocket的accept()方法,等待客戶端的連接System.out.println("==服務器即將啟動,等待客戶端的連接==");Socket socket=serverSocket.accept();//3.獲取輸入流用來讀取客戶端所發出的登錄信息InputStream is=socket.getInputStream();//字節輸入流InputStreamReader isr=new InputStreamReader(is);//將字節流轉化為字符流//為字符流添加緩衝BufferedReader bufferedReader=new BufferedReader(isr);String info=null;//循環讀取客戶端提交的信息while((info=bufferedReader.readLine())!=null){System.out.println("我是服務器,客戶端提交的信息是:"+info);}socket.shutdownInput();//4.獲取輸出流,響應客戶端的請求OutputStream os= socket.getOutputStream();PrintWriter pw=new PrintWriter(os);//轉化為打印流pw.write("歡迎您!");pw.flush();//刷新緩存//5.關閉相關的資源bufferedReader.close();is.close();isr.close();socket.close();serverSocket.close();os.close();pw.close();}catch (IOException ex) {Logger.getLogger(server.class.getName()).log(Level.SEVERE, null, ex);}}}客戶端類的代碼:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.Socket;import java.util.logging.Level;import java.util.logging.Logger;/** * * @author whn6325689 */public class client {//客戶端public static void main(String[] args) {try {//1.創建客戶端Socket,指定服務器地址和端口號Socket socket=new Socket("127.0.0.1", 8888);//2.獲取輸出流,用來向服務器發送信息OutputStream os=socket.getOutputStream();//字節輸出流//轉換為打印流PrintWriter pw=new PrintWriter(os);pw.write("用戶名:admin;密碼:admin");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();}catch (IOException ex) {Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);}}}先運行服務器端類,之後再運行客戶端類:
服務器端類輸出結果:
==服務器即將啟動,等待客戶端的連接== 我是服務器,客戶端提交的信息是:用戶名:admin;密碼:admin
客戶端類的輸出結果:
我是客戶端,服務器端返回的信息是:歡迎您!
總結
以上就是本文關於Java Socket編程服務器響應客戶端實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:
Java編程Socket實現多個客戶端連接同一個服務端代碼
Java多線程編程實現socket通信示例代碼
如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!