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

📄 clientthread.java

📁 chatting room 程序
💻 JAVA
字号:
package SmallChatRoom;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

import javax.swing.JTextArea;


public class ClientThread extends Thread {
	Socket csocket;
	PrintWriter writer;
	BufferedReader reader;
	ServerThread sThread;
	JTextArea sstatus;
	String msg;
	public static int connectNumber=0;
	
	public ClientThread(Socket csocket,ServerThread sThread){
		this.csocket=csocket;
		this.sThread=sThread;
		this.sstatus=sThread.sframe.serverstatus;
		connectNumber++;
		
		try{
			writer=new PrintWriter(csocket.getOutputStream());
			reader=new BufferedReader(new InputStreamReader(csocket.getInputStream()));
		}
		catch(IOException e){
			System.out.println("发生异常: "+e);
			System.out.println("建立I/O管道失败!!");
			System.exit(3);
		}
		
		msg="新朋友<"+getClientName()+">加入!!!";
		msg=msg+"聊天室人数:"+connectNumber+"\n\n";
		
		sThread.messages.addElement(msg);
	}
	
	public void run()
	{
		while(true)
		{
			try
			{
				String Message=reader.readLine();
				
				synchronized(sThread.messages)
				{
					if(Message!=null && Message.equals("ByeBye"))
					{
						//if(Message.equals("ByeBye"));
						//{
							connectNumber--;
							Message=getClientName()+":"+getClientAddress()+"已离开..";
							sstatus.append(Message+"  ");
							sstatus.append("目前在线用户数:"+connectNumber+"\n");
							sThread.messages.addElement(Message);
							
							synchronized(sThread.clients)
							{
								sThread.clients.removeElement(this);
							}
							break;
					}
					else if(Message!=null && Message.equals("ByeBye")==false)
					{
							Message="来自"+getClientName()+":"+getClientAddress()+"\n=>"+Message+"\n";
							sThread.messages.addElement(Message);
					}
					
				}
			}
			catch(IOException e){
				break;
			}
		}
	}
	
	public String getClientName(){
		return csocket.getInetAddress().getHostName();
	}
	
	public String getClientAddress(){
		return csocket.getInetAddress().getHostAddress();
	}
	
	public void finalize()
	{
		try
		{
			reader.close();
			writer.close();
			csocket.close();
		}
		catch(IOException e){}
		
		csocket=null;
	}
}

⌨️ 快捷键说明

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