使用java实现Server和Client(TCP)

Server.java

import java.io.*;
import java.net.*;


public class Server {

    public static final int PORT=8888;
    
    public void Server() throws IOException {
        ServerSocket ss = new ServerSocket(PORT);
        InetAddress ia = InetAddress.getByName(null);

        System.out.println("Server@"+ia+" start!");

        try{
            while(true){
                Socket s = ss.accept();// listen PORT;
                try{
                    new ServerOne(s);
                } catch (IOException e) {
                    s.close();
                } 
            }
        }finally{
            ss.close();
            System.out.println("Server stop!");
        }
    }
}

class ServerOne extends Thread {
    private Socket s;
    private BufferedReader in;
    private PrintWriter out;
    public ServerOne(Socket s) throws IOException {
        this.s = s;
        in = new BufferedReader(new InputStreamReader(s.getInputStream()));
        out = new PrintWriter(new BufferedWriter
                (new OutputStreamWriter(s.getOutputStream())), true);
        start();
    }
    public void run(){
        try {
            while(true) {
                String str = in.readLine();
                if(str.equals("end")) break;
                System.out.println("Server: receive information"+str);
                out.println("Echo: "+str);
            }
            System.out.println("closing....");
        } catch (IOException e){
        } finally {
            try{
                s.close();
            }catch(IOException e){}
        }
    }
}

Client.java:

import java.io.*;
import java.net.*;

public class Client extends Thread {
    static final int MAX_THREADS=25;
    private static int id = 0;
    private static int threadCount = 0;
    private Socket s;
    private BufferedReader in;
    private PrintWriter out;

    public static int getThreadCount(){
        return threadCount;
    }

    public Client(InetAddress ia){
        threadCount++;
        id++;
        System.out.println("Making client: " + id);
        try{
            s = new Socket(ia, Server.PORT);
        } catch (IOException e) {}
        try{
            in = new BufferedReader(new InputStreamReader(s.getInputStream()));
            out = new PrintWriter(new BufferedWriter
                    (new OutputStreamWriter(s.getOutputStream())), true);
            start();
        }catch(IOException e1){
            try{
                s.close();
            }catch(IOException e2){
                System.out.println("Error in Client\n");
            }
        }

    }

    public void run() {
        try{
            String str;
            for(int i = 0; i < 5; i++) {
                out.println("Client #"+id+":"+i);
                str=in.readLine();
                System.out.println("Client: send message#"+id+":"+i+"\n"
                        +"Server reply: "+str);
            }
            out.println("end");
        }catch(IOException e){
        }finally{
            try {
                s.close();
            } catch (IOException e){}
        }
    }

    public static void main(String args[]) throws IOException, InterruptedException {
        InetAddress ia = InetAddress.getByName(null); //null mean localhost
        while(true){
            if(getThreadCount() < MAX_THREADS)
                new Client(ia);
            else break;
            Thread.currentThread().sleep(10);
        }
    }
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。