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