📄 childrenthread.java
字号:
package server;
import java.io.*;
import java.awt.*;
import java.util.*;
import share.Message;
public class ChildrenThread extends Thread
{
private ObjectInputStream ois;
private ObjectOutputStream oos;
Hashtable userList;
String id;
TextArea ta;
public ChildrenThread(ObjectInputStream ois, ObjectOutputStream oos,
Hashtable userList, String id, TextArea ta)
{
super();
// TODO Auto-generated constructor stub
// this.ois = ois;
// this.oos = oos;
this.ois = ois;
this.oos = oos;
this.userList = userList;
this.id = id;
this.ta = ta;
}
public void run()
{
// TODO Auto-generated method stub
super.run();
try
{
this.sendUserList();
User toUser;
while (true)
{
if (ois != null)
{
System.out.println("at ChildrenThread 56 line.");
Message p = (Message) ois.readObject();
System.out.println("at ChildrenThread 59 line.");
String toID = p.getToID();
String fromID=p.getFromID();
String content=p.getContent();
if (userList.containsKey(toID))
{
toUser = (User) (userList.get(toID));
toUser.getOos().writeObject(p);
}
else if(toID.equals("server"))
{
if(p.getContent().equals("refresh"))
{
this.sendUserList();
}
}
else if(toID.equals("1000"))
{
for (Enumeration e = userList.elements(); e.hasMoreElements(); )
{
toUser= (User) e.nextElement();
System.out.println("==="+toUser.getId()+"===");
System.out.println("==="+fromID+"===");
if(toUser.getId().equals(fromID))
{
System.out.println("Children 71 line");
p.setToID(p.getFromID());
p.setFromID("server");
p.setDate(new Date());
p.setContent("Group send successful!");
this.oos.writeObject(p);
}
else
{
System.out.println("Children 81 line");
p.setToID(toUser.getId());
p.setFromID(fromID);
p.setDate(new Date());
p.setContent(content);
toUser.getOos().writeObject(p);
}
}
}
else
{
p.setToID(p.getFromID());
p.setFromID("server");
p.setDate(new Date());
p.setContent("the clint who you try to send Message to isn't online!");
this.oos.writeObject(p);
}
}
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
// e.printStackTrace();
this.close();
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
// e.printStackTrace();
this.close();
}
}
/**
* @throws IOException
*/
private void sendUserList()
{
try
{
String[] user = new String[userList.size()];
int i = 0;
for (Enumeration e = userList.elements(); e.hasMoreElements(); i++)
{
User u = (User) e.nextElement();
user[i] = u.getName() + "(" + u.getId() + ")";
}
oos.writeObject(user);
}
catch(IOException e)
{
e.printStackTrace();
}
}
private void close()
{
try
{
if (ois != null)
{
ois.close();
ois = null;
}
if (oos != null)
{
oos.close();
oos = null;
}
if (userList.containsKey(id))
{
userList.remove(id);
ta.append(new Date().toString()+":");
ta.append(" Client " + id + " has shut dowm!\n");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -