客戶端的編寫步驟和客戶端類似,步驟如下:
1.通過ip地址和端口號實例化socket,請求連接服務器
2.獲得socket上的流進行讀寫操作
3.把流封裝到BufferedReader/PRintWriter的實例
4.對socket進行讀寫
5.關閉打開的流
代碼部分:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintStream;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;public class Client { public static void main(String[] args) { PrintStream out=null; BufferedReader reader=null;//緩沖流 try { //客戶端建立連接,IP地址是本地,端口號:10000 Socket s = new Socket("localhost", 10000); //建立輸出流,目的是為了向服務器端寫數據 out = new PrintStream(s.getOutputStream()); //建立輸入流,目的是為了向服務器端讀數據 reader = new BufferedReader(new InputStreamReader(s.getInputStream())); //從鍵盤寫數據 Scanner c = new Scanner(System.in); while(true){ System.out.println("請輸入內容(exit:停止)"); String str=c.nextLine(); //寫數據 out.println(str); //讀數據 String line=reader.readLine(); System.out.println(line); } } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { reader.close(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}注意:1.在服務器端,一定要先讀后寫(因為服務端是監聽狀態),順序不能顛倒
2.在客戶端,一定要先寫后讀,同樣順序也不能顛倒
3.再練中,在關閉服務器端時,要關閉徹底,要不會出現意想不到的錯誤
新聞熱點
疑難解答