- Server端:先接收Client信息,然後返回信息
package server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
class CSThread extends Thread {
private Socket socket;
public CSThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
BufferedReader br = null;
PrintWriter pw = null;
try {
//根據此套接字的輸入流讀取文本,緩衝各個字符,從而實現字符、數組和行的高效讀取
//通過用合適的 BufferedReader 替代每個 DataInputStream
//對於多線程訪問不一定是安全的。 線程安全是可選的,它由此類方法的使用者負責。
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 根據現有的 OutputStream 創建不帶自動行刷新的新 PrintWriter。
pw = new PrintWriter(socket.getOutputStream());
Scanner sc = new Scanner(System.in);
while(true){
String clientsaid = br.readLine();
System.out.println("client said:"+clientsaid);
System.out.println("server said:");
String serverreply = sc.nextLine();
pw.println(serverreply);
pw.flush();
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
pw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}}public class ServerAfter{public static void main(String[] args) {try {//創建綁定到特定端口的服務器套接字ServerSocket serverSocket = new ServerSocket(9696);// 偵聽並接受到此套接字的連接。Socket socket = serverSocket.accept();//創建對象帶入多線程CSThread csThread = new CSThread(socket);//繼承Thread,執行run方法,開啓多線程csThread.start();} catch (IOException e) {e.printStackTrace();}}
- Client端:連接服務器,發送信息,接收回傳
package server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class ClientFirst {
public static void main(String[] args) {
BufferedReader br = null;
PrintWriter pw = null;
try {
//創建一個流套接字並將其連接到指定主機上的指定端口號。
Socket socket = new Socket("127.0.0.1", 9696);
Scanner sc = new Scanner(System.in);
//根據現有的 OutputStream 創建不帶自動行刷新的新 PrintWriter。傳遞信息
pw = new PrintWriter(socket.getOutputStream());
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
System.out.println("client said:");
String clientsaid = sc.nextLine();
pw.println(clientsaid);
pw.flush();
String serverreply = br.readLine();
System.out.println("server reply:"+serverreply );
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally{
try {
pw.close();
br.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
}
}