2025-02-09

今天看瞭下java網絡通訊的API,瞭解瞭下java如何進行網絡通訊的。
測試實例如下,首先構建瞭個監聽的server:
import java.net.ServerSocket;
import java.net.Socket;
 
/**
 * @data 2011-9-7
 */
public class ListenServer {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        try{
            ServerSocket serverSocket = new ServerSocket(55888);
            System.out.println("Now ListenServer's listening at port 55888 …");
            while(true){
                Socket sc = serverSocket.accept();
                System.out.println(sc.getInetAddress().getHostName() + " linked!");
                new Thread(new ProcessService(sc)).start();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
 
}
然後是多線程處理的服務類:
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
 
/**
 * @data 2011-9-7
 */
public class ProcessService implements Runnable {
    
    private Socket socket = null;
    public ProcessService(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        BufferedReader br = null;
        PrintWriter out = null;
        try{
            br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
            out = new PrintWriter(this.socket.getOutputStream(),true);
            do{
                String msg = br.readLine();
                out.println(msg);
                if(msg.equals("exit")){
                    break;
                }
            }while(true);
            
        }catch(Exception e){
            e.printStackTrace();             
        }finally{
            try {
                br.close();
                out.close();
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
    }
 
}
最後是客戶端類:
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
 
/**
 * @data 2011-9-7
 */
public class Client {
 
    public static void main(String[] args) {
        Socket socket = null;
        BufferedReader br = null;
        PrintWriter pw = null;
        BufferedReader in = null;
        try{
            socket = new Socket(InetAddress.getLocalHost(),55888);
            br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            pw = new PrintWriter(socket.getOutputStream(),true);
            in = new BufferedReader(new InputStreamReader(System.in));
            while(true){
                System.out.println("input:");
                String input = in.readLine();
                pw.println(input);
                String get = br.readLine();
                System.out.println("get:" + get);
                if(get.equals("exit")){
                    break;
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try {
                br.close();
                pw.close();
                in.close();
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            
        }
    }
 
}
寫的比較簡單,僅僅實現瞭服務器端與客戶端的通訊。

作者“星空望遠”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *