1. 程式人生 > >Java Socket接收和傳送(字串)

Java Socket接收和傳送(字串)

備註:必須先執行伺服器端,然後執行客戶端
1.客戶端
LoginClient.java
package pb.socket.LoginStr;

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.net.UnknownHostException;

public class LoginClient {
    public static void main(String[] args) {
        try {
            //1.建立客戶端socket連線,指定伺服器位置及埠
            Socket socket =new Socket("localhost",8800);
            //2.得到socket讀寫流
            OutputStream os=socket.getOutputStream();
            PrintWriter pw=new PrintWriter(os);
            //輸入流
            InputStream is=socket.getInputStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(is));
            //3.利用流按照一定的操作,對socket進行讀寫操作
            String info="使用者名稱:Tom,使用者密碼:123456";
            pw.write(info);
            pw.flush();
            socket.shutdownOutput();
            //接收伺服器的相應
            String reply=null;
            while(!((reply=br.readLine())==null)){
                System.out.println("接收伺服器的資訊:"+reply);
            }
            //4.關閉資源
            br.close();
            is.close();
            pw.close();
            os.close();
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
2.伺服器端
LoginServer.java
package pb.socket.LoginStr;

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;

public class LoginServer {
    public static void main(String[] args) {
        try {
            //1.建立一個伺服器Socket(ServerSocket)繫結指定埠
            ServerSocket serverSocket=new ServerSocket(8800);
            //2.使用accept()方法阻止等待監聽,獲得新連線
            Socket socket=serverSocket.accept();
            //3.獲得輸入流
            InputStream is=socket.getInputStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(is));
            //獲得輸出流
            OutputStream os=socket.getOutputStream();
            PrintWriter pw=new PrintWriter(os);
            //4.讀取使用者輸入資訊
            String info=null;
            while(!((info=br.readLine())==null)){
                System.out.println("我是伺服器,使用者資訊為:"+info);
            }
            //給客戶一個響應
            String reply="welcome";
            pw.write(reply);
            pw.flush();
            //5.關閉資源
            pw.close();
            os.close();
            br.close();
            is.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }    
    }
}