【JAVA】基於Socket協議傳輸的服務端與客戶端實例!(可直接運行)

一、Socket_Server.java

package socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class Socket_Server {

	public static void main(String[] args) {
		
		try{

			// 創建一個服務器端對象m_ServerSocket,參數是端口號
			ServerSocket m_ServerSocket=new ServerSocket(5000);
			
			// 通過accept()接收客戶的通信
			Socket m_socket=m_ServerSocket.accept();
			
			// 獲取客戶端輸入流,獲得用戶請求的信息
			InputStream is=m_socket.getInputStream();
			BufferedReader br=new BufferedReader(new InputStreamReader(is));
			String info;
			while((info=br.readLine())!=null){
				System.out.println("客戶端說:"+info);
			}
			
			// 給客戶端傳一個響應字符
			String reply="來自【服務器】的信息:作者是【老舍】。";
			byte[] replys=reply.getBytes();
			// 通過輸出流發送請求
			OutputStream os=m_socket.getOutputStream();
			os.write(replys);
			
			// 關閉打開的資源
			os.close();
			br.close();
			is.close();
			m_socket.close();
			m_ServerSocket.close();
		}
		catch (UnknownHostException e)
		{
			e.printStackTrace();
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		
		
	}
	
	
	
}

 

 

 

二、Socket_Client.java

 

package socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Socket_Client {

	public static void main(String[] args) {
	
		try{

			// 創建一個客戶端對象m_socket,參數是地址和端口號
			Socket m_socket=new Socket("localhost",5000);
			
			// 通過輸出流發送請求
			OutputStream os=m_socket.getOutputStream();
			// 把信息存入到字節變量中,再發送。
			String info="服務器,幫我查一下《駱駝祥子》的作者是誰?";
			byte[] infos=info.getBytes();
			os.write(infos);

			// 先關閉socket連接
			 m_socket.shutdownOutput();

			InputStream is=m_socket.getInputStream();
			BufferedReader br=new BufferedReader(new InputStreamReader(is));
			String reply;
			while((reply=br.readLine())!=null){
				System.out.println("服務器的響應:"+reply);
			}
			
			
			// 關閉打開的資源
			br.close();
			is.close();
			os.close();
			m_socket.close();
			
		}
		catch (UnknownHostException e)
		{
			e.printStackTrace();
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		
		
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章