java socket 一服务器对多客户端

服务器
import java.io.*;
import java.net.*;
import java.util.logging.Level;
import java.util.logging.Logger;

class Server extends Thread {

    private Socket s;

    public Server(Socket sp) {
        this.s = sp;
    }

    @Override
    public void run() {

        try {
            BufferedReader bf;
            PrintWriter pw;
            
            
            System.out.println("建立链接" + s.getInetAddress());
            bf = new BufferedReader(new InputStreamReader(s.getInputStream()));//从客户端得到的消息
            pw = new PrintWriter(s.getOutputStream());//往外输出
            String st = " ";
            while (true) {
                st = bf.readLine();
                System.out.println("客户发来消息:" + st);
                pw.println("发送成功" + st);
                pw.flush();
                if(st.equals("bye"))
                    break;

            }
            s.close();
        } catch (IOException ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        }
       
    }

    public static void main(String[] arg) throws IOException {
        ServerSocket s = new ServerSocket(30000);;
        while (true) {
            Server sc = new Server(s.accept());
            sc.start();
        }
    }
}


客户端:

 
import java.io.*;
import java.net.*;
import java.util.logging.Level;
import java.util.logging.Logger;
class Client{
    Socket so;
    BufferedReader bf;
    BufferedReader sbf;
    PrintWriter pw;
    public Client()
    {
        try {
            so=new Socket("127.0.0.1",30000);
            bf =new BufferedReader (new InputStreamReader(System.in));
            sbf=new BufferedReader(new InputStreamReader(so.getInputStream()));
            pw=new PrintWriter(so.getOutputStream());
            String s=" ";
            while(true)
            {
                 s=bf.readLine();
                pw.println(s);
                System.out.println("正在发送"+s);
                pw.flush();
                
                String stt=sbf.readLine();
                
                System.out.println(stt);
                if(s.equals("bye")) 
                {
                    pw.println("请求关闭");
                    break;
                }
               
            }
            //
            so.close();
        } catch (IOException ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public static void main(String []args)
    {
        new Client();
    }
}

 
 

你可能感兴趣的:(java)