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

📄 serverthread.java

📁 java聊天室服务器
💻 JAVA
字号:
package XXRoom;

import java.io.*;
import java.net.*;
import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;
import java.util.*;

/*用来等待用户联机*/
class ServerThread extends Thread 
{
	List messages = new ArrayList();//信息列表
	List clients = new ArrayList();//客户端线程
	ServerFrame sFrm;//服务器
	//等待用户联机的TCP
	ServerSocket sSocket;
	//向所有用户发送消息的UDP
	DatagramSocket dSocket;
	
	ListenThread lThread;
	Broadcast    bThread;
	MonitorThread mThread;
	

	public ServerThread( ServerFrame sFrm )
	{
		this.sFrm = sFrm;
		this.sSocket = sFrm.sSocket;
		this.dSocket = sFrm.dSocket;
		
		//开始监听线程
		lThread = new ListenThread( this );
		lThread.start();
		//开始广播线程
		bThread = new Broadcast( this );
		bThread.start();

		mThread = new MonitorThread();
		mThread.start();
	}

	public void run()
	{
		while( true )
		{
			try
			{	
				Socket skt = sSocket.accept();

				try
				{
					ClientThread cThread = new ClientThread( this, skt );
					cThread.start();

					synchronized( clients )
					{
						clients.add( cThread );
					}
				}
				catch ( IOException er )
				{
					er.printStackTrace();
					continue;
				}
			}
			catch( IOException e )
			{
				e.printStackTrace();
			}			
		}
	}

	public void dispose()
	{				
		lThread.stop();		
		bThread.stop();
		mThread.stop();

		lThread.dispose();
		bThread.dispose();
		mThread.dispose();		

		messages.add( "QUIT SERVER" );		
			
		for( int i = 0; i < clients.size(); i ++ ) {
			for( int j = 0; j < messages.size(); j ++ ) {
				((ClientThread)clients.get( i )).write.println( messages.get( j ) );
			}
		}		
				
		for( int i = 0; i < clients.size(); i ++ ) {
			((ClientThread)clients.get( i )).stop();			
			((ClientThread)clients.get( i )).dispose();
		}
					
		
		clients.clear();
		messages.clear();
		sFrm = null;
		dSocket = null;
		sSocket = null;
		clients = null;
		messages = null;
	}
}

⌨️ 快捷键说明

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