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

📄 chatroomserver.java

📁 java聊天程序,通过socket编程实现网络通信。在两台机器(在一台机器上也可)上依次启动服务器、客户端;在客户端输入正确的服务器地址后确认连接是否成功
💻 JAVA
字号:
package package0;
import java.io.*;
import java.net.*;
import java.util.*;
import java.lang.*;

public class ChatRoomServer extends ServerSocket
{
	
  private static ArrayList Threader = new ArrayList();
  private static LinkedList Message_Array = new LinkedList();
  private static int Thread_Counter = 0;
  private static boolean isClear = true;
  protected static final int ChatRoomServer_PORT =8189;


  public ChatRoomServer() throws FileNotFoundException, IOException//端口监听,等待接收消息
  {
    super(ChatRoomServer_PORT);
   new Broadcast();

     try
    {
     while (true)
     {
      Socket socket = accept();
      new CreateChatRoomServerThread(socket);
      }
     }
    finally
     {
      close();
      }
   }


   class Broadcast extends Thread
   {
      public Broadcast()
       {
        start();
       }

   public void run()
   {
    while (true)
    {
    if (!isClear)
     {
      String tmp = (String)Message_Array.getFirst();

      for (int i = 0; i < Threader.size(); i++)
       {
        CreateChatRoomServerThread client = (CreateChatRoomServerThread)Threader.get(i);
        client.sendMessage(tmp);
       }

      Message_Array.removeFirst();
      isClear = Message_Array.size() > 0 ? false : true;
      }
     }
    }
   }

  class CreateChatRoomServerThread extends Thread//开线程并处理socket消息
  {
   private Socket client;
   private BufferedReader in;
   private PrintWriter out;
   private String Username;

   public CreateChatRoomServerThread(Socket s) throws IOException
   {
    client = s;
    in = new BufferedReader(new InputStreamReader(client.getInputStream()));
    out = new PrintWriter(client.getOutputStream(), true);
    out.println(" Welcome to this chatroom ");
    out.println("Input your Username:");
    start();
   }

   public void sendMessage(String msg)
   {
    out.println(msg);
    }

   public void run()
   {
     try
     {
       int flag = 0;
        Thread_Counter++;
        String line = in.readLine();

        while (!line.equals("bye"))
       {
         if (line.equals("l"))
        {

          line = in.readLine();
          continue;
        }

         if (flag++ == 0)
          {
            Username = line;
            Threader.add(this);
            pushMessage("  " + Username + " come on in !");
          }
         else
           {
            pushMessage("[" + Username + "]" + line);
            }

          line = in.readLine();
       }

       out.println(" See you bye! ");
       client.close();
      }
     catch (IOException e)
       {}
      finally
       {
         try
        {
          client.close();
         }
         catch (IOException e)
        {}

          Thread_Counter--;
          Threader.remove(this);
          pushMessage("[< " + Username + " left>]");
        }
       }

     private void pushMessage(String msg)
       {
         Message_Array.addLast(msg);
         isClear = false;
       }
   }

  public static void main(String[] args) throws IOException//main()函数
  {
   new ChatRoomServer();
   }
}

⌨️ 快捷键说明

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