📄 mainthread.java
字号:
package server;
import java.io.*;
import java.awt.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.*;
public class MainThread extends Thread
{
private ServerSocket sc;
private TextArea ta;
private TextField tf;
ObjectInputStream ois;
ObjectOutputStream oos;
Hashtable userList = new Hashtable();
public MainThread(ServerSocket sc, TextArea ta, TextField tf)
{
this.sc = sc;
this.ta = ta;
this.tf = tf;
}
public void run()
{
// TODO Auto-generated method stub
// create connection
SystemThread t = new SystemThread(tf, userList);
t.start();
try
{
while (true)
{
Socket s = sc.accept();
System.out.println("at MainThread 47 line.");
ois = new ObjectInputStream(s.getInputStream());
oos = new ObjectOutputStream(s.getOutputStream());
String op = ((String) ois.readObject()).trim();
if(op.equals("login"))
{
login();
}
else if(op.equals("register"))
{
register();
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @throws IOException
* @throws ClassNotFoundException
*/
private void login()
{
try
{
String id = ((String) ois.readObject()).trim();
String name = ((String) ois.readObject()).trim();
ArrayList al=readFileData();
if(al!=null)
{
if(al.contains(id))
{
if (userList.containsKey(id))
{
oos.writeObject(new Boolean(false));
oos.flush();
}
else
{
User user = new User(id, name, ois, oos);
userList.put(id, user);
ta.append(new Date().toString() + ":");
ta.append(" Client " + id + " has logined successful!\n");
oos.writeObject(new Boolean(true));
oos.flush();
ChildrenThread ct = new ChildrenThread(ois, oos, userList,
id, ta);
ct.start();
System.out.println("at MainThread 67 line.");
}
}
else
{
oos.writeObject(new Boolean(false));
oos.flush();
}
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void register()
{
try
{
String id = ((String) ois.readObject()).trim();
//String name = ((String) ois.readObject()).trim();
ArrayList al=readFileData();
if(al!=null)
{
if(al.contains(id))
{
oos.writeObject(new Boolean(false));
oos.flush();
}
else
{
writeFileData(id);
oos.writeObject(new Boolean(true));
oos.flush();
ta.append(new Date().toString() + ":");
ta.append(" Client " + id + " has registered successful!\n");
}
}
else
{
oos.writeObject(new Boolean(false));
oos.flush();
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ArrayList readFileData()
{
File f=new File("bin\\data\\user.bin");
try
{
FileInputStream fis=new FileInputStream(f);
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(isr);
ArrayList al=new ArrayList();
String s=br.readLine();
while(s!=null)
{
al.add(s);
s=br.readLine();
}
//String[] data=new String[count];
//int i=0;
/*while((data[i]=br.readLine())!=null)
{
i++;
}*/
// System.out.println("MainThread 217 line "+data[0] +" "+br.readLine());
br.close();
return al;
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public void writeFileData(String userID)
{
File f=new File("bin\\data\\user.bin");
try
{
FileOutputStream fos=new FileOutputStream(f,true);
OutputStreamWriter osw=new OutputStreamWriter(fos);
PrintWriter br=new PrintWriter(osw);
br.println(userID);
br.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -