日期:2014-05-20  浏览次数:20645 次

培训老师给我们做的一个聊天小程序,大家看看好不?
学校老师组织培训,我们的培训老师当时给我们做了一个小的聊天室的程序是用的命令行,10几分钟就做出来了,而且还一边打一边给我们讲解,感觉老师好厉害,大家给点建议,赫赫……

Java code
import java.util.*;
import java.net.*;
import java.io.*;

public class Server{
    public static final int port=10000;
    public static final Vector users=new Vector();
    public static void main(String args[]){
        ServerSocket server=null;
        try{
            server=new ServerSocket(port);
            System.out.println("Server start up on port :"+port);
            while(true){
                Socket s=server.accept();
                User user=new User(s);
                user.start();
            }
            

        }catch(Exception e){
            e.printStackTrace();
        }finally{

            if(server!=null&&!server.isClosed()){
                try{server.close();}catch(Exception e){}
            }    
        }
    }

}

class User extends Thread{
    private Socket s;
    private String userName;
    private InetAddress ip;
    public User(Socket s){
        this.s=s;
    }
    public void run(){
        try{
            InputStream input=s.getInputStream();
            OutputStream output=s.getOutputStream();
            BufferedReader buf=new 
                BufferedReader(new 
                InputStreamReader(input));
            PrintWriter pw=new 
            PrintWriter(new OutputStreamWriter(output),true);
            
            pw.println("welcome u ,enter your name :");
            userName=buf.readLine();
            Server.users.add(this);
            sendAll(userName+" has join us ");;
            long t=0;
            while(true){
                String line=buf.readLine();
                long s=System.currentTimeMillis();
                if((s-t)/1000<3){
                    pw.println("flush denied ");
                    continue;
                }
                t=s;

    
                if(line==null||line.trim().length()==0){
                pw.println("flush denied ");
                continue;
                }
                if(line.equals("bye")){
                    sendAll(userName+" leave us ");
                    Server.users.remove(this);    
                    break;
            
                }

                sendAll(userName+" said :"+line);
            }        
        }catch(Exception e){
            //e.printStackTrace();
        }finally{
            if(s!=null)try{s.close();}catch(Exception e){}
        }
    }
    public  synchronized void sendMessage(String message){
        try{
            PrintWriter pw=new 
            PrintWriter(new OutputStreamWriter(
            s.getOutputStream()));
            pw.println(message);
            pw.flush();
        }catch(Exception e){}
    }
    public void sendAll(String message){
        Iterator it=Server.users.iterator();
        while(it.hasNext()){
            User user=(User)it.next();
            user.sendMessage(message);
        }
    }
}


------解决方案--------------------
你下次背个俄罗斯方块的程序 然后上课的时候遍讲边敲挑战下老师
------解决方案--------------------
引用楼主 timebomb 的帖子:
学校老师组织培训,我们的培训老师当时给我们做了一个小的聊天室的程序是用的命令行,10几分钟就做出来了,而且还一边打一边给我们讲解,感觉老师好厉害,大家给点建议,赫赫……


Java codeimport java.util.*;
import java.net.*;
import java.io.*;

public class Server{
public static final int port=10000;
public static final Vector users=new Vector();
public static void main(String args…

------解决方案--------------------
没试过当很多人面边讲边写这类程序,向您老师学习,程序我跑了下,10楼的问题我没遇到过,关注。。
------解决方案--------------------