⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainthread.java

📁 这是我们课程设计的时候做的聊天程序
💻 JAVA
字号:
package server;

import java.io.*;
import java.awt.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.*;

public class MainThread extends Thread
{
    private ServerSocket sc;

    private TextArea ta;

    private TextField tf;

    ObjectInputStream ois;

    ObjectOutputStream oos;

    Hashtable userList = new Hashtable();

    public MainThread(ServerSocket sc, TextArea ta, TextField tf)
    {
        this.sc = sc;
        this.ta = ta;
        this.tf = tf;

    }

    public void run()
    {
        // TODO Auto-generated method stub

        // create connection

        SystemThread t = new SystemThread(tf, userList);
        t.start();
        try
        {

            while (true)
            {

                Socket s = sc.accept();

                System.out.println("at MainThread 47 line.");
                ois = new ObjectInputStream(s.getInputStream());
                oos = new ObjectOutputStream(s.getOutputStream());
                
                String op = ((String) ois.readObject()).trim();
                
                if(op.equals("login"))
                {
                    login();
                }
                else if(op.equals("register"))
                {
                    register();
                    
                }
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        catch (ClassNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    /**
     * @throws IOException
     * @throws ClassNotFoundException
     */
    private void login() 
    {
        try
        {
            String id = ((String) ois.readObject()).trim();
            String name = ((String) ois.readObject()).trim();
            
            ArrayList al=readFileData();
            if(al!=null)
            {
                
                if(al.contains(id))
                {
                    if (userList.containsKey(id))
                    {
                        oos.writeObject(new Boolean(false));
                        oos.flush();
                       
                    }
                    else
                    {
                        User user = new User(id, name, ois, oos);
                        userList.put(id, user);
                        ta.append(new Date().toString() + ":");
                        ta.append("  Client " + id + " has logined successful!\n");

                        oos.writeObject(new Boolean(true));
                        oos.flush();

                        ChildrenThread ct = new ChildrenThread(ois, oos, userList,
                                id, ta);
                        ct.start();
                        System.out.println("at MainThread 67 line.");
                    }
                }
                else
                {
                    oos.writeObject(new Boolean(false));
                    oos.flush();
                 
                }
            }
         
           
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (ClassNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    private void register() 
    {
        try
        {
            String id = ((String) ois.readObject()).trim();
            //String name = ((String) ois.readObject()).trim();
            
            ArrayList al=readFileData();
            if(al!=null)
            {
                if(al.contains(id))
                {
                    oos.writeObject(new Boolean(false));
                    oos.flush();
                }
                else
                {
                    writeFileData(id);
                    oos.writeObject(new Boolean(true));
                    oos.flush();
                    ta.append(new Date().toString() + ":");
                    ta.append("  Client " + id + " has registered successful!\n");
                }
            }
            else
            {
                oos.writeObject(new Boolean(false));
                oos.flush();
          
            }
         
             

            
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (ClassNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    public ArrayList  readFileData()
    {
       
            File f=new File("bin\\data\\user.bin");
            try
            {
                FileInputStream fis=new FileInputStream(f);
                InputStreamReader isr=new InputStreamReader(fis);
                BufferedReader br=new BufferedReader(isr);
               
                ArrayList al=new ArrayList();
                String s=br.readLine();
                while(s!=null)
                {
                   al.add(s);
                   s=br.readLine();
                }
              
                //String[] data=new String[count];
                //int i=0;
                /*while((data[i]=br.readLine())!=null)
                {
                    i++;
                }*/
               // System.out.println("MainThread 217 line   "+data[0] +"     "+br.readLine());
                
                br.close();
                
                return al;
                
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return null;
            }
            
    }
    public void writeFileData(String userID)
    {

        File f=new File("bin\\data\\user.bin");
        try
        {
            FileOutputStream fos=new FileOutputStream(f,true);
            OutputStreamWriter osw=new OutputStreamWriter(fos);
            PrintWriter br=new PrintWriter(osw);
            br.println(userID);
      
            br.close();
            
             
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -