📄 serverrev.java
字号:
import java.net.*;
import java.io.*;
import java.util.*;
///这是一个服务器的程序
///server1是一个服务器的套接字对象
///bman是一个Vector数据结构的类,它是用来存储聊天记录的。
///startserver是一个创建服务器套接字对象。并且发送消息的方法
/// chat_thread是一个聊天的线程类
///sendclientinfo是一个回送客户端信息的方法
public class serverrev
{
private ServerSocket server1;
private bmanager bman=new bmanager();
public serverrev(){}
void startserver()
{
try
{
server1=new ServerSocket(6000);
System.out.println("服务器套接字创建完毕");
while(true)
{
Socket socket1=server1.accept();
new chat_thread(socket1).start();
bman.add(socket1);
bman.sendclientinfo();
}
}
catch(Exception e)
{
System.out.println(e);
}
}
public static void main(String[] args)
{
serverrev server=new serverrev();
server.startserver();
}
class chat_thread extends Thread
{
Socket socket1;
private BufferedReader reader1;
private PrintWriter writer1;
chat_thread(Socket socket1)
{
this.socket1=socket1;
}
public void run()
{
try
{
reader1=new BufferedReader(new InputStreamReader(socket1.getInputStream()));
writer1=new PrintWriter(socket1.getOutputStream(),true);
String info;
while((info=reader1.readLine())!=null)
System.out.println(info);
bman.sendtoall(info);
}
catch(Exception e){}
finally
{
try
{
bman.remove(socket1);
if(reader1!=null) reader1.close();
if(writer1!=null) writer1.close();
if(socket1!=null) socket1.close();
System.out.println("客户机离开了");
bman.sendclientinfo();
}
catch(Exception e){}
}
}
}
class bmanager extends Vector
{
void add(Socket socket1)
{
super.add(socket1);
}
void remove(Socket socket1)
{
super.remove(socket1);
}
synchronized void sendtoall(String info)
{
PrintWriter writer1=null;
Socket socket1;
for(int i=0;i<size();i++)
{
socket1=(Socket)elementAt(i);
try
{
writer1=new PrintWriter(socket1.getOutputStream(),true);
}
catch(Exception e){}
if(writer1!=null)
writer1.println(info);
}
}
synchronized void sendclientinfo()
{
String info=" 当前聊天人数:"+size();
System.out.println(info);
sendtoall(info);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -