Register.java文件代码
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
public class Register extends JFrame implements ActionListener
{
//声明组件
JLabel lblHeading;
JLabel lblUserName;
JLabel lblUserPwd;
JLabel lblCnfUserPwd;
JLabel lblFrstName;
JLabel lblLstName;
JLabel lblAge;
JLabel lblEmpId;
JLabel lblSex; String usrName;
char[] usrPwd;
char[] cnfPwd;
String frstName;
String lstName;
String age;
String empid; Socket toServer;
ObjectInputStream streamFromServer;
PrintStream streamToServer;
JComboBox lstSex; JTextField txtUserName;
JPasswordField txtUsrPwd;
JPasswordField txtCnfUsrPwd;
JTextField txtFrstName;
JTextField txtLstName;
JTextField txtAge;
JTextField txtEmpId;
Font f; Color r;
JButton btnSubmit;
JButton btnCancel; public Register()
{
this.setTitle("注册界面");
JPanel panel=new JPanel();
//应用布局管理器
panel.setLayout(new GridBagLayout());
GridBagConstraints gbCons=new GridBagConstraints();
//放置图形组件
gbCons.gridx=0;
gbCons.gridy=0;
lblHeading=new JLabel("注册信息");
Font f=new Font("Monospaced", Font.BOLD, 24);
lblHeading.setFont(f);
Color c=new Color(0,200,0);
lblHeading.setForeground(new Color(131,25,38));
lblHeading.setVerticalAlignment(SwingConstants.TOP);
gbCons.anchor=GridBagConstraints.WEST;
panel.add(lblHeading, gbCons); gbCons.gridx=0;
gbCons.gridy=1;
lblUserName=new JLabel("用户名称: ");
gbCons.anchor=GridBagConstraints.WEST;
panel.add(lblUserName, gbCons); gbCons.gridx=1;
gbCons.gridy=1;
txtUserName=new JTextField(15);
panel.add(txtUserName, gbCons); gbCons.gridx=0;
gbCons.gridy=2;
lblUserPwd=new JLabel("密码: ");
panel.add(lblUserPwd, gbCons); gbCons.gridx=1;
gbCons.gridy=2;
txtUsrPwd=new JPasswordField(15);
panel.add(txtUsrPwd, gbCons); gbCons.gridx=0;
gbCons.gridy=3;
lblCnfUserPwd=new JLabel("确认密码: ");
panel.add(lblCnfUserPwd, gbCons); gbCons.gridx=1;
gbCons.gridy=3;
txtCnfUsrPwd=new JPasswordField(15);
panel.add(txtCnfUsrPwd, gbCons);
gbCons.gridx=0;
gbCons.gridy=4;
lblEmpId=new JLabel("雇员编号: ");
panel.add(lblEmpId, gbCons); gbCons.gridx=1;
gbCons.gridy=4;
txtEmpId=new JTextField(15);
panel.add(txtEmpId, gbCons); gbCons.gridx=0;
gbCons.gridy=5;
lblFrstName=new JLabel("名: ");
panel.add(lblFrstName, gbCons); gbCons.gridx=1;
gbCons.gridy=5;
txtFrstName=new JTextField(15);
panel.add(txtFrstName, gbCons); gbCons.gridx=0;
gbCons.gridy=6;
lblLstName=new JLabel("姓: ");
panel.add(lblLstName, gbCons); gbCons.gridx=1;
gbCons.gridy=6;
txtLstName=new JTextField(15);
panel.add(txtLstName, gbCons);
gbCons.gridx=0;
gbCons.gridy=7;
lblAge=new JLabel("年龄: ");
panel.add(lblAge, gbCons);
gbCons.gridx=1;
gbCons.gridy=7;
txtAge=new JTextField(3);
panel.add(txtAge, gbCons); gbCons.gridx=0;
gbCons.gridy=8;
lblSex=new JLabel("性别: ");
panel.add(lblSex, gbCons); gbCons.gridx=1;
gbCons.gridy=8;
String[] sex= {"男", "女"};
JComboBox lstSex=new JComboBox(sex);
lstSex.setSelectedIndex(0);
panel.add(lstSex, gbCons);
JPanel btnPanel=new JPanel();
btnSubmit=new JButton("提交");
btnPanel.add(btnSubmit);
btnSubmit.addActionListener(this);
//向"提交"按钮添加事件监听器
btnCancel=new JButton("取消");
btnPanel.add(btnCancel);
btnCancel.addActionListener(this);
//向"取消"按钮添加事件监听器
gbCons.gridx=0;
gbCons.gridy=9;
gbCons.anchor=GridBagConstraints.EAST;
panel.add(btnPanel, gbCons);
getContentPane().add(panel); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true);
setSize(450,400);
}//Register()结束 public void actionPerformed(ActionEvent e1)
{
JButton button=(JButton)e1.getSource();
//获取事件源
if(button.equals(btnCancel))
{
this.dispose();
}
else
{
int ver=verify(); //调用verify()方法
if(ver==1)
{
try
{
//建立一个Socket连接并创建一个Socket的输入输出流
toServer = new Socket("wilson",1001);
streamFromServer = new ObjectInputStream(toServer.getInputStream());
streamToServer = new PrintStream(toServer.getOutputStream()); //向服务器发送消息进行注册
streamToServer.println("注册信息");
usrName = txtUserName.getText();
usrPwd = txtUsrPwd.getPassword();
String pwd = new String(usrPwd);
//向服务器发送用户名和密码
streamToServer.println(usrName+":"+pwd);
//读取服务器的响应信息
String frmServer = (String)streamFromServer.readObject();
if(frmServer.equals("已注册"))
{
new Login();
this.dispose();
}
else if(frmServer.equals("用户已存在"))
{
showUsrExists();
//显示错误信息
}
}// try块结束
catch(Exception e)
{
System.out.println("异常 "+e);
}
}//if 块结束
}//else 块结束
}//actionPerformed()函数结束 int verify() //检验用户信息的正确性
{
int ctr=0;
int intAge = 0;
try
{
usrName = txtUserName.getText();
usrPwd = txtUsrPwd.getPassword();
cnfPwd = txtCnfUsrPwd.getPassword();
frstName = txtFrstName.getText();
lstName = txtLstName.getText();
age = txtAge.getText();
empid = txtEmpId.getText();
String strUsrPwd = new String(usrPwd);
String strCnfPwd = new String(cnfPwd);
try
{
intAge = (int)Integer.parseInt(age.trim());
}
catch(Exception e)
{
showErrordlgInt();
}
if(
(usrName.length()>0)&&
(strUsrPwd.length()>0)&&
(strCnfPwd.length()>0)&&
(frstName.length()>0)&&
(lstName.length()>0)&&
(intAge>21)&&
(intAge<58)&&
(empid.length()>0)&&
(strUsrPwd.equals(strCnfPwd))
)
{
ctr = 1;
return ctr;
}
else
{
showErrordlg();
}// else 块结束
}// try 块结束
catch(Exception e)
{
System.out.println("抛出异常 "+e);
}// catch 块结束
return ctr;
}// verify()函数结束 //错误信息---用户已存在
void showUsrExists()
{
JOptionPane.showMessageDialog(
this,
"用户已存在.",
"错误",
JOptionPane.ERROR_MESSAGE);
} int flg = 0; //错误信息---非法输入
void showErrordlg()
{
JOptionPane.showMessageDialog(
this,
"非法输入.",
"错误",
JOptionPane.ERROR_MESSAGE);
} //错误信息---非法年龄
void showErrordlgInt()
{
JOptionPane.showMessageDialog(
this,
"年龄不正确.",
"错误",
JOptionPane.ERROR_MESSAGE);
} public static void main(String args[])
{
new Register();
}}//end of class
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
public class Register extends JFrame implements ActionListener
{
//声明组件
JLabel lblHeading;
JLabel lblUserName;
JLabel lblUserPwd;
JLabel lblCnfUserPwd;
JLabel lblFrstName;
JLabel lblLstName;
JLabel lblAge;
JLabel lblEmpId;
JLabel lblSex; String usrName;
char[] usrPwd;
char[] cnfPwd;
String frstName;
String lstName;
String age;
String empid; Socket toServer;
ObjectInputStream streamFromServer;
PrintStream streamToServer;
JComboBox lstSex; JTextField txtUserName;
JPasswordField txtUsrPwd;
JPasswordField txtCnfUsrPwd;
JTextField txtFrstName;
JTextField txtLstName;
JTextField txtAge;
JTextField txtEmpId;
Font f; Color r;
JButton btnSubmit;
JButton btnCancel; public Register()
{
this.setTitle("注册界面");
JPanel panel=new JPanel();
//应用布局管理器
panel.setLayout(new GridBagLayout());
GridBagConstraints gbCons=new GridBagConstraints();
//放置图形组件
gbCons.gridx=0;
gbCons.gridy=0;
lblHeading=new JLabel("注册信息");
Font f=new Font("Monospaced", Font.BOLD, 24);
lblHeading.setFont(f);
Color c=new Color(0,200,0);
lblHeading.setForeground(new Color(131,25,38));
lblHeading.setVerticalAlignment(SwingConstants.TOP);
gbCons.anchor=GridBagConstraints.WEST;
panel.add(lblHeading, gbCons); gbCons.gridx=0;
gbCons.gridy=1;
lblUserName=new JLabel("用户名称: ");
gbCons.anchor=GridBagConstraints.WEST;
panel.add(lblUserName, gbCons); gbCons.gridx=1;
gbCons.gridy=1;
txtUserName=new JTextField(15);
panel.add(txtUserName, gbCons); gbCons.gridx=0;
gbCons.gridy=2;
lblUserPwd=new JLabel("密码: ");
panel.add(lblUserPwd, gbCons); gbCons.gridx=1;
gbCons.gridy=2;
txtUsrPwd=new JPasswordField(15);
panel.add(txtUsrPwd, gbCons); gbCons.gridx=0;
gbCons.gridy=3;
lblCnfUserPwd=new JLabel("确认密码: ");
panel.add(lblCnfUserPwd, gbCons); gbCons.gridx=1;
gbCons.gridy=3;
txtCnfUsrPwd=new JPasswordField(15);
panel.add(txtCnfUsrPwd, gbCons);
gbCons.gridx=0;
gbCons.gridy=4;
lblEmpId=new JLabel("雇员编号: ");
panel.add(lblEmpId, gbCons); gbCons.gridx=1;
gbCons.gridy=4;
txtEmpId=new JTextField(15);
panel.add(txtEmpId, gbCons); gbCons.gridx=0;
gbCons.gridy=5;
lblFrstName=new JLabel("名: ");
panel.add(lblFrstName, gbCons); gbCons.gridx=1;
gbCons.gridy=5;
txtFrstName=new JTextField(15);
panel.add(txtFrstName, gbCons); gbCons.gridx=0;
gbCons.gridy=6;
lblLstName=new JLabel("姓: ");
panel.add(lblLstName, gbCons); gbCons.gridx=1;
gbCons.gridy=6;
txtLstName=new JTextField(15);
panel.add(txtLstName, gbCons);
gbCons.gridx=0;
gbCons.gridy=7;
lblAge=new JLabel("年龄: ");
panel.add(lblAge, gbCons);
gbCons.gridx=1;
gbCons.gridy=7;
txtAge=new JTextField(3);
panel.add(txtAge, gbCons); gbCons.gridx=0;
gbCons.gridy=8;
lblSex=new JLabel("性别: ");
panel.add(lblSex, gbCons); gbCons.gridx=1;
gbCons.gridy=8;
String[] sex= {"男", "女"};
JComboBox lstSex=new JComboBox(sex);
lstSex.setSelectedIndex(0);
panel.add(lstSex, gbCons);
JPanel btnPanel=new JPanel();
btnSubmit=new JButton("提交");
btnPanel.add(btnSubmit);
btnSubmit.addActionListener(this);
//向"提交"按钮添加事件监听器
btnCancel=new JButton("取消");
btnPanel.add(btnCancel);
btnCancel.addActionListener(this);
//向"取消"按钮添加事件监听器
gbCons.gridx=0;
gbCons.gridy=9;
gbCons.anchor=GridBagConstraints.EAST;
panel.add(btnPanel, gbCons);
getContentPane().add(panel); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true);
setSize(450,400);
}//Register()结束 public void actionPerformed(ActionEvent e1)
{
JButton button=(JButton)e1.getSource();
//获取事件源
if(button.equals(btnCancel))
{
this.dispose();
}
else
{
int ver=verify(); //调用verify()方法
if(ver==1)
{
try
{
//建立一个Socket连接并创建一个Socket的输入输出流
toServer = new Socket("wilson",1001);
streamFromServer = new ObjectInputStream(toServer.getInputStream());
streamToServer = new PrintStream(toServer.getOutputStream()); //向服务器发送消息进行注册
streamToServer.println("注册信息");
usrName = txtUserName.getText();
usrPwd = txtUsrPwd.getPassword();
String pwd = new String(usrPwd);
//向服务器发送用户名和密码
streamToServer.println(usrName+":"+pwd);
//读取服务器的响应信息
String frmServer = (String)streamFromServer.readObject();
if(frmServer.equals("已注册"))
{
new Login();
this.dispose();
}
else if(frmServer.equals("用户已存在"))
{
showUsrExists();
//显示错误信息
}
}// try块结束
catch(Exception e)
{
System.out.println("异常 "+e);
}
}//if 块结束
}//else 块结束
}//actionPerformed()函数结束 int verify() //检验用户信息的正确性
{
int ctr=0;
int intAge = 0;
try
{
usrName = txtUserName.getText();
usrPwd = txtUsrPwd.getPassword();
cnfPwd = txtCnfUsrPwd.getPassword();
frstName = txtFrstName.getText();
lstName = txtLstName.getText();
age = txtAge.getText();
empid = txtEmpId.getText();
String strUsrPwd = new String(usrPwd);
String strCnfPwd = new String(cnfPwd);
try
{
intAge = (int)Integer.parseInt(age.trim());
}
catch(Exception e)
{
showErrordlgInt();
}
if(
(usrName.length()>0)&&
(strUsrPwd.length()>0)&&
(strCnfPwd.length()>0)&&
(frstName.length()>0)&&
(lstName.length()>0)&&
(intAge>21)&&
(intAge<58)&&
(empid.length()>0)&&
(strUsrPwd.equals(strCnfPwd))
)
{
ctr = 1;
return ctr;
}
else
{
showErrordlg();
}// else 块结束
}// try 块结束
catch(Exception e)
{
System.out.println("抛出异常 "+e);
}// catch 块结束
return ctr;
}// verify()函数结束 //错误信息---用户已存在
void showUsrExists()
{
JOptionPane.showMessageDialog(
this,
"用户已存在.",
"错误",
JOptionPane.ERROR_MESSAGE);
} int flg = 0; //错误信息---非法输入
void showErrordlg()
{
JOptionPane.showMessageDialog(
this,
"非法输入.",
"错误",
JOptionPane.ERROR_MESSAGE);
} //错误信息---非法年龄
void showErrordlgInt()
{
JOptionPane.showMessageDialog(
this,
"年龄不正确.",
"错误",
JOptionPane.ERROR_MESSAGE);
} public static void main(String args[])
{
new Register();
}}//end of class
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import javax.swing.Timer;public class clientInt extends JFrame implements ActionListener
{
Timer t=new Timer(5000,new TimerAction());
String usr_name;
public String remUser;
class TimerAction implements ActionListener
{
Socket toServer;
ObjectInputStream streamFromServer;
PrintStream streamToServer;
public void actionPerformed(ActionEvent e2)
{
try
{
toServer = new Socket("wilson",1001);
streamFromServer = new ObjectInputStream(toServer.getInputStream());
streamToServer = new PrintStream(toServer.getOutputStream());
message = txtMsg.getText();
//send a message to the server
streamToServer.println("From Timer"); //receive vectors from the server
Vector vector = (Vector)streamFromServer.readObject();
Vector vector1 = (Vector)streamFromServer.readObject();
txtListUsers.setText(" ");
for(int j = 1;j<vector1.capacity(); j++)
{
txtListUsers.append((String)vector1.elementAt(j));
txtListUsers.append("\n");
}
//show the messages
int i = messageCount;
for(;i<vector.capacity();i++)
{
txtMessages.append((String)vector.elementAt(i));
txtMessages.append("\n");
}
messageCount = i;
}//end of try catch(Exception e)
{
System.out.println("Exception "+e);
}
}//end of actionPerformed
}//end of TimerListener class int messageCount = 0;
String name;
PrintStream streamToServer;
ObjectInputStream streamFromServer;
Socket toServer;
JTextArea txtMessages;
JTextArea txtListUsers;
JTextField txtMsg;
JButton msgSendBtn;
JButton userLoginBtn;
JButton userRegisterBtn;
JButton userLogoutBtn; JLabel lblChatRoom;
JLabel lblUserList; JScrollPane jspSendMsgPane;
JScrollPane jspTxtMsgPane;
JScrollPane jspUserListPane; JTextField textWriteMsg;
String message;
int nSend;
{
remUser = nm;
usr_name = nm;
this.setTitle("FunChat: "+usr_name); //set the title name
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints gbCons = new GridBagConstraints();
gbCons.gridx = 0;
gbCons.gridy = 0;
lblChatRoom = new JLabel("Chat Room", SwingConstants.LEFT);
panel.add(lblChatRoom, gbCons); gbCons.gridx = 1;
gbCons.gridy = 0; lblUserList = new JLabel("Online Users", SwingConstants.LEFT);
panel.add(lblUserList, gbCons);
gbCons.gridx = 0;
gbCons.gridy = 1;
gbCons.gridwidth = 1;
gbCons.gridheight = 1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
txtMessages = new JTextArea(25,35);
txtMessages.setEditable(false);
jspTxtMsgPane = new JScrollPane(txtMessages,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel.add(jspTxtMsgPane, gbCons);
gbCons.gridx = 1;
gbCons.gridy = 1;
gbCons.gridwidth = 1;
gbCons.gridheight = 1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
txtListUsers = new JTextArea(25,10);
txtListUsers.setEditable(false);
jspUserListPane = new JScrollPane(txtListUsers,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel.add(jspUserListPane, gbCons);
gbCons.gridx = 0;
gbCons.gridy = 2;
gbCons.gridwidth = 1;
gbCons.gridheight = 1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
txtMsg = new JTextField(35); jspSendMsgPane = new JScrollPane(txtMsg,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel.add(jspSendMsgPane, gbCons);
gbCons.gridx = 1;
gbCons.gridy = 2;
gbCons.gridwidth = 1;
gbCons.gridheight = 1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
gbCons.anchor = GridBagConstraints.WEST;
msgSendBtn = new JButton("Send");
panel.add(msgSendBtn, gbCons);
msgSendBtn.addActionListener(this);
JPanel btnPanel = new JPanel();
userLogoutBtn = new JButton("Logout");
userLogoutBtn.addActionListener(this); //add a listener to the window
this.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e1)
{
try
{
Socket toServer;
ObjectInputStream streamFromServer;
PrintStream streamToServer;
toServer = new Socket("wilson",1001);
streamToServer = new PrintStream(toServer.getOutputStream());
streamToServer.println("User Logout");
streamToServer.println(remUser);
}//end of try
catch(Exception e2)
{
System.out.println("Exception Occured: "+e2);
}
}
}
);
btnPanel.add(userLogoutBtn);
gbCons.gridx = 0;
gbCons.gridy = 3;
gbCons.gridwidth = 1;
gbCons.gridheight = 1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
gbCons.anchor = GridBagConstraints.EAST;
gbCons.fill = GridBagConstraints.HORIZONTAL;
panel.add(btnPanel, gbCons);
getContentPane().add(panel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setSize(546,567);
t.start();
}//end of clientInt() public void actionPerformed(ActionEvent e1)
{
JButton button = (JButton)e1.getSource();
//if logout button clicked
if(button.equals(userLogoutBtn))
{
try
{
toServer = new Socket("wilson",1001);
streamToServer = new PrintStream(toServer.getOutputStream());
//send a msg to server for logging out
streamToServer.println("User Logout");
streamToServer.println(remUser);
}
catch(Exception e)
{
System.out.println("Exception Occured: "+e);
}
this.dispose();
}
//else if Send button is clicked
else
{
int num1 = 0,num2 = 0,res = 0;
String name = " ";
try
{
toServer = new Socket("wilson",1001);
streamFromServer = new ObjectInputStream(toServer.getInputStream());
streamToServer = new PrintStream(toServer.getOutputStream());
message = txtMsg.getText();
String msg = message; //send the username and msg typedto the server
streamToServer.println(usr_name+":"+msg);
txtMsg.setText(" ");
//read the reply from the server
Vector vector = (Vector)streamFromServer.readObject();
int i = messageCount;
for(;i<vector.capacity();i++)
{
txtMessages.append((String)vector.elementAt(i)); //display the messages
// txtMessages.append("\n");
}//end of for
messageCount = i;
}//end of try
catch(Exception e)
{
System.out.println("Exception Occurred: "+e);
}
}//end of else }//end of actionPerformed() public static void main(String args[])
{
String nm = new String();
clientInt CI = new clientInt(nm);
}
}//end of class
聊天室是基于socket的编程,建议先了解下socket原理,这对你理解这些代码有帮助。
new Socket("wilson",1001); 它是通过1001端口创建一个对象。端口可以自己指定,只要不于其他端口冲突就可以了。那它的用户名和密码是怎么保存的? java是基于对象的编程,你new一个对象之后,它就在内存中创建一个对象,对象中包含用户的信息。因此,用户名和密码只在运行期间有效。它是保存在内存中的
Socketpublic Socket(String host, int port) throws UnknownHostException, IOException 创建一个流套接字并将其连接到指定主机上的指定端口号。 如果指定的主机为 null,则等效于指定与 InetAddress.getByName(null) 相同的地址。换句话话,等效于指定回送接口的地址。 如果应用程序已指定服务器套接字工厂,则调用该工厂的 createSocketImpl 方法来创建实际套接字实现。否则创建“普通”套接字。 如果有安全管理器,则使用主机地址和 port 作为参数调用其 checkConnect 方法。这可能会导致 SecurityException 异常。 参数:
host - 主机名,或者为 null,表示回送地址。
port - 端口号。
抛出:
UnknownHostException - 如果无法确定主机的 IP 地址。
IOException - 如果创建套接字时发生 I/O 错误。
SecurityException - 如果安全管理器存在并且其 checkConnect 方法不允许进行该操作。它没有用到数据库,那它的用户名和密码是怎么保存的,保存在那里呢???
看你的程序,应该是存放在流中(Stream)了……
//import classes
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import javax.swing.Timer.*;//Code for the AppServer classpublic class AppServer implements Runnable
{
ServerSocket server;
Socket fromClient;
Thread serverThread; public AppServer()
{
System.out.print("FunChat server started..........");
try
{
server = new ServerSocket(1001);
serverThread = new Thread(this);
serverThread.start();
}
catch(Exception e)
{
System.out.println("Cannot start the thread: " + e);
}
}//end of AppServer() public static void main(String args[])
{
new AppServer();
} public void run()
{
try
{
while(true)
{
//Listening to the clients request
fromClient = server.accept();
//Creating the connect object
Connect con = new Connect(fromClient);
}
}
catch(Exception e)
{
System.out.println("Cannot listen to the client: " + e);
}
}//end of run}//end of Appserver class//Code for the connect class
class Connect
{
ObjectOutputStream streamToClient;
int ctr = 0; BufferedReader streamFromClient;
static Vector vector;
static Vector vctrList;
String mesg = " ";
static String str = new String("UsrList");
static
{
vector = new Vector(1,1);
vctrList = new Vector(1,1);
vctrList.addElement((String)str);
} int verify(String mesg)
{
try
{
RandomAccessFile RAS = new RandomAccessFile("UsrPwd.txt", "r");
int i = 0;
String str = " ";
while((RAS.getFilePointer())!=(RAS.length()))
{
str = RAS.readLine();
if(str.equals(mesg))
{
ctr = 1;
break;
}
} //end of while
RAS.close();
} //end of try
catch(Exception e)
{
System.out.print("Exception Occurred: "+e);
}
return ctr;
} //end of verify() int checkFile(String mesg)
{
int chk = 1;
try
{
RandomAccessFile RS = new RandomAccessFile("UsrPwd.txt", "r");
int i = 0;
String str = " ";
String colon = new String(":");
int index = ((String)mesg).lastIndexOf(colon);
String userName = (String)mesg.substring(0,index);
while((RS.getFilePointer())!=(int)(RS.length()))
{
str = RS.readLine();
int index1 = ((String)str).lastIndexOf(colon);
String usrName = (String)str.substring(0,index1);
if(usrName.equals(userName))
{
chk = 0;
break;
}
}//end of while
RS.close();
}//end of try
catch(Exception e)
{
System.out.print("Exception Occurred: "+e);
}
return chk;
}//end of chkFile public Connect(Socket inFromClient)
{
//Retrieving the clients stream
String msg = " ";
String message = " ";
try
{
streamFromClient = new BufferedReader(new InputStreamReader(inFromClient.getInputStream()));
streamToClient = new ObjectOutputStream(inFromClient.getOutputStream()); msg = streamFromClient.readLine();
if((msg.equals("From Timer")))
{
streamToClient.writeObject(vector);
streamToClient.writeObject(vctrList);
}
else if(msg.equals("LoginInfo"))
{
msg = streamFromClient.readLine();
int ver = verify(msg);
if(ver==1)
{
String colon = new String(":");
int index = ((String)msg).lastIndexOf(colon);
String userName = (String)msg.substring(0,index);
if(!(vctrList.indexOf((String)userName)>0))
{
streamToClient.writeObject("Welcome");
vctrList.addElement((String)userName);
}
}
else
{
streamToClient.writeObject("Login denied");
}
}
else if(msg.equals("RegisterInfo"))
{
msg = streamFromClient.readLine();
int ret = checkFile(msg);
if(ret==0)
{
FileOutputStream out = new FileOutputStream("UsrPwd.txt",true);
PrintStream p = new PrintStream(out);
p.println();
p.println(msg);
p.close();
streamToClient.writeObject("Registered");
}
}
else if(msg.equals("User Logout"))
{
String remUser = streamFromClient.readLine();
boolean b = vctrList.removeElement((String)remUser);
}
else
{
message = message+msg;
vector.addElement((String)message);
streamToClient.writeObject(vector);
}
}//end of try
catch(Exception e)
{
System.out.println("Cannot get the client stream connect" + e);
}
finally
{
try
{
inFromClient.close();
}
catch(IOException e)
{
System.out.print("Exception Occurred: "+e);
}
}
}//end of Connect()
}