客户端运行结果:
Exception in thread "main" java.lang.NullPointerException
at cn.com.client1.Client.closeSocket(Client.java:50)
at cn.com.client1.Client.doLogin(Client.java:76)
at cn.com.client1.ClientScream.createLoginView(ClientScream.java:37)
at cn.com.client1.ClientScream.main(ClientScream.java:24)
服务器端运行结果:
Exception in thread "Thread-0" java.lang.NullPointerException
at cn.com.serverSocket1.Server_Socket.run(Server_Socket.java:86)
[code=Java][/code]截图如下
客户端 界面代码:
package cn.com.client1;
import java.util.Scanner;
import cn.com.entity1.Cashier;
import cn.com.entity1.StoreMgr;
import cn.com.util1.Goods;
import cn.com.util1.SysConstants;
/*
* 客户端界面类
*/
public class ClientScream {
//控制台输入对象
private static Scanner scanner =new Scanner(System.in);
//客户端业务对象
private static Client client=new Client();
public static void main(String[] args) {
System.out.println("*********欢迎使用青鸟超市管理系统**********");
System.out.println("1.登录\n2.退出系统");
System.out.println("************请选择数字1/2*************");
int num=scanner.nextInt();
if (num==1) {
//调用登录视图
createLoginView();
}
System.out.println("系统终止运行");
}
public static void createLoginView(){
while (true) {
System.out.println("用户名称:");
String username=scanner.next();
System.out.println("用户密码:");
String password=scanner.next();
//调用登录服务业务 且向服务器端发送请求
Goods goods=client.doLogin(username,password);
System.out.println("客户端向服务器端发送请求成功!");
//服务器回复了请求
if (SysConstants.SYS_SUCCESS.equals(goods.getFlag())) {
//正确返回数据
System.out.println("服务器端回复客户端,响应成功!\n客户端开始操作......");
//调用学员管理视图
// createCommodifyManagerView(goods.getStoremgr());
break;
}else {
//出错,继续登录
System.out.println("用户名或者密码输入错误!登录失败!");
}
}
}
}
服务器端 代码:
package cn.com.serverSocket1;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import cn.com.entity1.StoreMgr;
import cn.com.util1.Goods;
import cn.com.util1.SysConstants;
import cn.com.util1.Tools;
/*
服务器端的线程类
*/
public class Server_Socket extends Thread {
public static void main(String[] args) {
//线程子类的对象的启动
new Server_Socket().start();
}
//重写run方法
public void run() {
System.out.println("服务器启动!");
ServerSocket serverSocket=null;
ObjectOutputStream objectOutputStream=null;
ObjectInputStream objectInputStream = null;
Socket socket =null;
//创建Server_Socket对象,绑定一个端口
try {
serverSocket=new ServerSocket(Integer.parseInt(Tools.getValue(SysConstants.SYS_LISTENERPORT)));
//对socket对象,接受accept();
while(true){
socket=serverSocket.accept();
//对建立输入输出流 且实例化(对对象进行 序列化和反序列化)
objectOutputStream=new ObjectOutputStream(socket.getOutputStream());
objectInputStream =new ObjectInputStream(socket.getInputStream());//由服务器端开始
//在协议上进行读 取
//读 接受请求
System.out.println("服务器端接受客户端请求成功!");