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

📄 talkerthread.java

📁 基于的多线程方式多人在线聊天程序基于的多线程方式多人在线聊天程序基于的多线程方式多人在线聊天程序基于的多线程方式多人在线聊天程序基于的多线程方式多人在线聊天程序
💻 JAVA
字号:
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Map;

public class TalkerThread extends Thread 
{
    Socket socket;    
    HashMap<String,Socket> talkerList;
    public TalkerThread(Socket s,HashMap<String,Socket> talkerList)
    {
        socket = s;
        this.talkerList=talkerList;
    }
    
    public void run()
    {
        try
        {
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
            BufferedReader in = new BufferedReader(
                new InputStreamReader(socket.getInputStream()));
            String message = null;
            
            while ((message = in.readLine())!=null)
            {
                int index1 = message.indexOf("{");
                int index2 = message.indexOf("}");
                int index3 = message.indexOf("-");                
                int index4 = message.indexOf(' ');                
                Set set = talkerList.keySet();
                String name = null;
                if(message.startsWith("talker"))                
                {
                    name = message.substring(index4+1,message.length()).trim();
                    if(!set.contains(name))
                    {
                         talkerList.put(name,socket);
                         out.println("Hello "+name);
                         System.out.println(name+" has entered");
                         System.out.println("There are "+talkerList.size()+" talkers now");
                    }
                    else
                    {
                         out.println(name+" you hava already entered!");
                    }
                }
                else if(message.startsWith("exit"))
                {
                    Iterator iter = talkerList.keySet().iterator();
                    while(iter.hasNext())
                    {
                        Socket skt = (Socket)(talkerList.get(iter.next()));
                        out = new PrintWriter(skt.getOutputStream(),true);
                        out.println(name+"has left.");
                    }
                    talkerList.remove(name);
                }
                else if((index1==-1)&&(index2==-1))
                {
                    String content = (message.substring(index3+1,message.length())).trim(); 
                    Iterator iter = talkerList.keySet().iterator();
                    while(iter.hasNext())
                    {
                        Socket skt = (Socket)(talkerList.get(iter.next()));
                        out = new PrintWriter(skt.getOutputStream(),true);
                        out.println(content);
                    }
                }                
                else 
                {   
                    String peername = (message.substring(index1+1,index2)).trim();
                    String content = (message.substring(index3+1,message.length())).trim();
                    if(set.contains(peername))
                    {
                        Socket skt = (Socket)(talkerList.get(peername));
                        out = new PrintWriter(skt.getOutputStream(),true);
                        out.println(content);
                    }
                    else
                    {    out.println("Sorry, this user does not exit at this moment!");}
                }
                //RECEIVED = false;
            }            
            out.close();
            in.close();
            socket.close();
        }
        catch (IOException exc)
        {
            exc.printStackTrace();            
        }    
    }
}   

⌨️ 快捷键说明

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