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

📄 remoteclient.java

📁 chat room
💻 JAVA
字号:
package Server;
import java.net.*;
import java.io.*;

import ShareData.Message;

public class RemoteClient implements Runnable{
	private Socket socket;
	private String name="Anonymous";
	private boolean conn=true;
	private IServer server;
	
	
	public RemoteClient(Server s,Socket socket){
		server=s;
		this.socket=socket;
	}
	
	public void disconnect(){
		conn=false;
		try {
			socket.close();
		} catch (IOException e) {
			System.out.println("Failed Disconnect:Socket/Name--"+socket+"/"+name);
			e.printStackTrace();
		}
	}
	
	public String getName(){
		return name;
	}
	
	public void setName(String n){
		String old=name;
		name=n;
		Message m=new Message("name",old+" has changed name to "+name);
		System.out.println(old+" has changed name to "+name);
		server.sendToAll(m);
	}
	
	public RemoteClient(Socket s){
		socket=s;
	}
	
	public void sendToClient(Message message){
		try {
			ObjectOutputStream oos=new ObjectOutputStream(socket.getOutputStream());
			oos.writeObject(message);
			System.out.println("sendToClient:"+message.getType()+message.getContent());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("Fail to Write ");
			e.printStackTrace();
		}
	}
	
	public Message readFromClient(){
		Message m=null;
		try {
			
			ObjectInputStream ois=new ObjectInputStream(socket.getInputStream());
			m=(Message)ois.readObject();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return m;
	}
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(conn){
			Message m=this.readFromClient();
			System.out.println("Receive sth from "+ this.getName());
			System.out.println("type "+ m.getType()+" content "+m.getContent());
			if("conversation".equalsIgnoreCase(m.getType()) )
				server.sendToAll(m);
			else if("newname".equalsIgnoreCase(m.getType())){
				System.out.println("setName");
				if(server.getRemoteClientbyName(m.getContent())!=null)
					server.sendToOne(new Message("error","The name is already exist!"), this);
				else
					setName(m.getContent());
				
			}
			else if("quit".equalsIgnoreCase(m.getType())){
				server.removeRemoteClient(this);
			}
			else
				;
		}
		
	}

}

⌨️ 快捷键说明

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