首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

javaSE的登陆验证有关问题,小弟我不知道哪里错了

2012-07-31 
javaSE的登陆验证问题,我不知道错哪了。没界面、没数据库,主要是用Socket和IO,main方法里调用,验证不成功,求

javaSE的登陆验证问题,我不知道错哪了。
没界面、没数据库,主要是用Socket和IO,main方法里调用,验证不成功,求指教

ClientCode

[code=Java]
package   shop_client;
import   java.io.BufferedOutputStream;
import   java.io.BufferedReader;
import   java.io.BufferedWriter;
import   java.io.IOException;
import   java.io.InputStreamReader;
import   java.io.ObjectInputStream;
import   java.io.ObjectOutputStream;
import   java.io.OutputStreamWriter;
import   java.net.Socket;
import   shop_entity.ShopUser;
import   shop_server.Socket_Server;
public   class   Socket_Client   {
Socket   s   =null;
String   flag   =null   ;  
ShopUser   su   =   null;

InputStreamReader   isr   =   null;
OutputStreamWriter   osw   =   null;

BufferedReader   br   =   null;
BufferedWriter   bw=   null;

BufferedOutputStream   bos   =   null;
ObjectInputStream   ois   =null;
ObjectOutputStream   oos   =null;
//初始化客户端socket信息
public   void   clientinit()
                  {
try{
s   =   new   Socket( "127.0.0.1 ",8099);
}catch(Exception     ex)
{
ex.printStackTrace();
}
}
//从键盘获得输入(Io流方式)
public   void   getKeyboard()
{
isr   =   new   InputStreamReader(System.in);
br   =   new   BufferedReader(isr);
try   {
flag   =   br.readLine();
}   catch   (IOException   e)   {
e.printStackTrace();
}
}
//登陆提示信息
public   void   showWelcome()
{
System.out.println( "=================== ");
System.out.println( "欢迎进入xxx超市系统 ");
System.out.println( "=================== ");
}
//登陆方法
public   void   userLogin()   throws   IOException
{
//接收控制台输入
isr   =   new   InputStreamReader(System.in);
br   =   new   BufferedReader(isr);
System.out.println( "请输入帐号: ");
String   name   =   br.readLine();
System.out.println( "请输入密码: ");
String   password   =   br.readLine();
//将控制台输入的帐号密码保存,并传入服务端
bos   =   new   BufferedOutputStream(s.getOutputStream());
oos   =   new   ObjectOutputStream(bos);
su   =   new   ShopUser(name,password);
oos.writeObject(su);
oos.flush();
}
//判断登陆
public   void   clientuserJudge()   throws   IOException
{
isr   =   new   InputStreamReader(s.getInputStream());
br   =   new   BufferedReader(isr);
String   loginInfo   =null;
Socket_Server   ss   =   new   Socket_Server();
while((loginInfo=br.readLine())!=null)                         [color=#FF0000]//****好像就是这里出错了****//[/color]{

if(loginInfo.equals(ss.showManager()))
{
System.out.println(loginInfo);
getKeyboard();
}else   if(loginInfo.equals(ss.showSale()))
{
System.out.println(loginInfo);
getKeyboard();
}else   if(loginInfo.equals( "登陆失败,请重新输入 "))
{
System.out.println(loginInfo);
userLogin();


}
}
}

}

[/code]

ServerCode

[code=Java]
package   shop_server;
import   java.io.BufferedInputStream;
import   java.io.BufferedReader;
import   java.io.BufferedWriter;
import   java.io.IOException;
import   java.io.InputStreamReader;
import   java.io.ObjectInputStream;
import   java.io.ObjectOutputStream;
import   java.io.OutputStreamWriter;
import   java.net.ServerSocket;
import   java.net.Socket;
import   shop_entity.ShopGoods;
import   shop_entity.ShopUser;

public   class   Socket_Server   {
ServerSocket   ss   =   null;
Socket   s   =null;
ShopUser   su;

BufferedWriter   bw   =   null;
BufferedReader   br   =   null;

InputStreamReader   isr   =   null;
OutputStreamWriter   osw=   null;

BufferedInputStream   bis   =   null;
ObjectInputStream   ois   =null;
ObjectOutputStream   oos   =   null;
//初始化服务端socket信息
public   void   serverinit(){
try{
ss   =new   ServerSocket(8099);
s   =   new   Socket();
System.out.println( "服务端已经启动 ");
while(true){
ss.accept();
}
}catch(Exception     ex)
{
ex.printStackTrace();
}

}
public   void   serveruserJudge()   throws   IOException,   ClassNotFoundException
{
bis   =   new   BufferedInputStream(s.getInputStream());
ois   =   new   ObjectInputStream(bis);
su   =   (ShopUser)ois.readObject();

osw   =   new   OutputStreamWriter(s.getOutputStream());
bw   =   new   BufferedWriter(osw);
while(su!=null)
{
if(su.getName().equals( "gly ")   &&   su.getPassword().equals( "123 "))
{
    bw.write(this.showManager());
}else   if(su.getName().equals( "syy ")   &&   su.getPassword().equals( "456 "))
{
                                            bw.write(this.showSale());
}else
{
    bw.write( "登陆失败,请重新输入 ");
}
}
}

//显示管理员权限
public   String   showManager()
{
String   a   =   "你好!您是管理员,请选择您要的操作: ";  
String   b   = "1.商品入库 "+ "   2.商品出库 "+
      "   3.添加商品 "+ "   4.查询全部 "+ "   5.查询单品 "+ "   6.退出 ";
return   a+b+ "\t ";
}
//显示收银权限
public   String   showSale()
{
String   a   =   "你好!您是收银员,请选择您要的操作: ";
String   b   =   "1.扫描商品 "+ "   2.修改数量 "+
"   3.普通结账 "+ "   4.会员结账 "+ "   5.退出 ";
return   a+b+ "\t ";
}  

}

[/code]

[解决办法]
//初始化服务端socket信息
public void serverinit(){
try{
ss =new ServerSocket(8099);
s = new Socket();
System.out.println("服务端已经启动");


while(true){
ss.accept();
}
}catch(Exception ex)
{
ex.printStackTrace();
}

这里有问题s = new Socket() ??你的s 应该是被监听的socket 应该是s = ss.accept();吧,
[解决办法]
更好的方法是你可以获取到监听的socket后直接交给一个线程去处理

热点排行