📄 chatroomserver.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 + -