로그인, UserInfo 클래스로 더 많은 정보 담기

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Server {
	public static void send(DataOutputStream dos, String msg) {
		try {
			dos.writeUTF(msg);
			dos.flush();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		
		Map<String, UserInfo> userInfo = new HashMap<>();
		userInfo.put("tom",new UserInfo("tom@naver.com","1234"));
		userInfo.put("susan",new UserInfo("susan@nate.com", "1324"));
		userInfo.put("jane",new UserInfo("jane@gmail.com", "5342"));
		userInfo.put("jack",new UserInfo("jack@daum.net", "9123"));
		
		try {
			ServerSocket server = new ServerSocket(30000);
			System.out.println("서버를 가동했습니다.");
			Socket sock = server.accept();
			
			DataInputStream dis = 
					new DataInputStream(sock.getInputStream());
			DataOutputStream dos = 
					new DataOutputStream(sock.getOutputStream());
			
			System.out.println(sock.getInetAddress() + " 에서 연결");
			
			String id = dis.readUTF();
			String pw = dis.readUTF();
			
			Set<String> ids = userInfo.keySet();
			if(!ids.contains(id)) {
				send(dos,"fail");
			}else {
				String checkPw = userInfo.get(id).getPw();
				if(checkPw.contentEquals(pw)) {
					send(dos,"success");
				}else {
					send(dos,"fail");
				}
			}
			
			
			
		}catch(Exception e) {
			e.printStackTrace();
			System.exit(0);
		}
	}
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.util.Scanner;

public class Client {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		try {
			Socket client = new Socket("127.0.0.1",30000);
			
			DataInputStream dis = 
					new DataInputStream(client.getInputStream());
			DataOutputStream dos = 
					new DataOutputStream(client.getOutputStream());
			
			System.out.print("아이디 : ");
			String id = sc.nextLine();
			System.out.print("패스워드 : ");
			String pw = sc.nextLine();
			
			dos.writeUTF(id);
			dos.writeUTF(pw);
			dos.flush();
			
			String resp = dis.readUTF();
			System.out.println(resp);
			
			
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

public class UserInfo{
	private int account;
	private String email;
	private String pw;


	public UserInfo() {
		super();
	}
	public UserInfo(int account, String email, String pw) {

		this.account = account;
		this.email = email;
		this.pw =pw;
	}
	
	public int getAccount() {
		return account;
	}
	public void setAccount(int account) {
		this.account = account;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Server {
	
	public static void send(DataOutputStream dos, String msg) {
		try {
			dos.writeUTF(msg);
			dos.flush();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {

		Map<String, UserInfo> userInfo = new HashMap<>();
		userInfo.put("tom", new UserInfo(1000,"tom@naver.com","1234"));
		userInfo.put("susan",new UserInfo(1000,"susan@nate.com", "1324"));
		userInfo.put("jane",new UserInfo(1000, "jane@gmail.com", "5342"));
		userInfo.put("jack",new UserInfo(1000, "jack@daum.net", "9123"));

		try {
			ServerSocket server = new ServerSocket(30000);
			
			System.out.println("서버를 가동했습니다.");
			Socket sock = server.accept();

			DataInputStream dis = 
					new DataInputStream(sock.getInputStream());
			DataOutputStream dos = 
					new DataOutputStream(sock.getOutputStream());

			System.out.println(sock.getInetAddress() + " 에서 연결");

			
			String id = dis.readUTF();
			String pw = dis.readUTF();

			Set<String> ids = userInfo.keySet();
			if(!ids.contains(id)) {
				send(dos,"없는 아이디 입니다.");
		
			}else {
				String checkPw = userInfo.get(id).getPw();
				if(checkPw.contentEquals(pw)) {
					send(dos,"로그인 되었습니다.");
				}else {
					send(dos,"비밀번호를 잘못 입력하셨습니다.");
				}
			}

			while(true) {
				String menu = dis.readUTF(); // 메세지 받기
	
				if(menu.contentEquals("account")) {	//잔액조회

					String msg = ""+userInfo.get(id).getAccount();
					send(dos, msg);

				}else if(menu.contentEquals("deposit")) {//입금

					int deposit = Integer.parseInt(dis.readUTF());
					userInfo.get(id).setAccount(userInfo.get(id).getAccount() + deposit);
					String msg = ""+userInfo.get(id).getAccount();
					send(dos, msg);

				}else if(menu.contentEquals("withdraw")) {//출금

					int withdraw = Integer.parseInt(dis.readUTF());
					userInfo.get(id).setAccount(userInfo.get(id).getAccount() - withdraw);
					String msg = ""+userInfo.get(id).getAccount();
					send(dos, msg);

				}else {

				}
			}
		}catch(Exception e) {
			e.printStackTrace();
			System.exit(0);
		}
	}
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class Client {

	public static void send(DataOutputStream dos, String msg) {
		try {
			dos.writeUTF(msg);
			dos.flush();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		try {
			Socket client = new Socket("192.168.60.19",30000);//192.168.60.19
			//127.0.0.1

			DataInputStream dis = 
					new DataInputStream(client.getInputStream());
			DataOutputStream dos = 
					new DataOutputStream(client.getOutputStream());

		

				System.out.print("아이디 : ");
				String id = sc.nextLine();
				System.out.print("패스워드 : ");
				String pw = sc.nextLine();

				dos.writeUTF(id);
				dos.writeUTF(pw);
				dos.flush();

				String resp = dis.readUTF();
				System.out.println(resp); //성공 실패 표시

				while(true) {
					System.out.print("account / deposit / withdraw : ");
					String menu = sc.nextLine();

					send(dos,menu); // 보내기


					if(menu.contentEquals("account")) {//account

						String msg = dis.readUTF();
						System.out.println("잔액 : "+msg);

					}else if(menu.contentEquals("deposit")) {//deposit

						System.out.print("입금할 금액을 입력하세요 : ");
						String  deposit= sc.nextLine();
						send(dos,deposit);

						String msg = dis.readUTF();
						System.out.println("잔액 : "+msg);

					}else if(menu.contentEquals("withdraw")) {//withdraw

						System.out.print("출금할 금액을 입력하세요 : ");
						String  withdraw= sc.nextLine();
						send(dos,withdraw);

						String msg = dis.readUTF();
						System.out.println("잔액 : "+msg);
					}
				}
			

		}catch(Exception e) {
			e.printStackTrace();
		}

	}
}

 


참고용

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;


public class Server3 {


   public static void send(DataOutputStream dos, String message) {
      try {
         dos.writeUTF(message);
         dos.flush();
      }catch(Exception e) {
         e.printStackTrace();
      }
   }


   public static void main(String[] ar) {

      //아이디,비번,메일 저장
      Map<String, UserInfo> map = new HashMap<>();
      map.put("aaa", new UserInfo("1111", "aaa@naver.com", 0));
      map.put("bbb", new UserInfo("2222", "bbb@naver.com", 0));
      map.put("ccc", new UserInfo("3333", "ccc@naver.com", 0));

      Set <String> ids = map.keySet();

      try {
         ServerSocket server = new ServerSocket(10000);  //포켓번호

         System.out.println("서버가 구동되었습니다.");
         System.out.println("클라이언트가 연결을 대기중입니다...");
         Socket sock = server.accept();  //내 짝의 연결정보가들어있음

         System.out.println(sock.getInetAddress() + " 에서 연결하였습니다.");

         OutputStream os = sock.getOutputStream();
         DataOutputStream dos = new DataOutputStream(os);

         InputStream is = sock.getInputStream();
         DataInputStream dis = new DataInputStream(is);


         a:while(true) {

            //로그인
            String id = dis.readUTF();
            String pw = dis.readUTF();


            if(!ids.contains(id)) {
               send(dos, "false1");
               dis.readUTF();
               continue a;
            }else if(map.get(id).getPw().contentEquals(pw)) {
               send(dos,"true");
            }else {
               send(dos,"false2");
               dis.readUTF();
               continue a;
            }

            //메뉴에 따라 실행
            while(true) {
               String menu = dis.readUTF();

               if(menu.equals("1")) {

                  send(dos, menu);
                  send(dos,""+map.get(id).getAccount());
                  dis.readUTF();

               }else if(menu.equals("2")) {

                  send(dos, menu);
                  int input = Integer.parseInt(dis.readUTF());
                  send(dos,""+input);
                  map.get(id).setAccount(map.get(id).getAccount()+input);
                  dis.readUTF();

               }else if(menu.equals("3")) {

                  send(dos, menu);
                  int output = Integer.parseInt(dis.readUTF());

                  if(map.get(id).getAccount()<output) {
                     send(dos,"false");
                     dis.readUTF();
                  }else {
                     send(dos,"true");
                     send(dos,""+output);
                     map.get(id).setAccount(map.get(id).getAccount()-output);
                     dis.readUTF();
                  }

               }else if(menu.equals("4")) {
                  send(dos, menu);
                  send(dos,"시뮬레이터를 종료합니다.");
                  System.exit(0);
               }

            }

         }

      }catch(Exception e) {
         e.printStackTrace();
         System.exit(0);
      }


   }
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class Client3 {
   public static void main(String[] ar) throws Exception {
      Scanner sc = new Scanner(System.in);

      Socket sock = new Socket("127.0.0.1", 10000);  //"127.0.0.1" 나혼자할때!

      InputStream is = sock.getInputStream();
      DataInputStream dis = new DataInputStream(is);

      OutputStream os = sock.getOutputStream();
      DataOutputStream dos = new DataOutputStream(os);

      a:while(true) {

         dos.writeUTF(JOptionPane.showInputDialog("    ***ATM 시뮬레이터***\n로그인 ID를 입력해주세요."));
         dos.flush();
         dos.writeUTF(JOptionPane.showInputDialog("    ***ATM 시뮬레이터***\n로그인 비밀번호를 입력해주세요."));
         dos.flush();

         String msg = dis.readUTF();  //로그인 성공여부

         if(msg.contentEquals("false1")) {
            dos.writeUTF(JOptionPane.showInputDialog("입력하신 아이디가 존재하지 않습니다."));
            dos.flush();
            continue a;
         }else if(msg.contentEquals("false2")) {
            dos.writeUTF(JOptionPane.showInputDialog("입력하신 비밀번호가 일치하지 않습니다."));
            dos.flush();
            continue a;
         }else if(msg.contentEquals("true")) {
            dos.writeUTF(JOptionPane.showInputDialog("로그인에 성공했습니다."));
         }


         //메뉴 실행
         while(true) {

            dos.writeUTF(JOptionPane.showInputDialog("    ***ATM 시뮬레이터***\n"
                  + "1. 잔액조회\n2. 입금하기\n3. 출금하기\n4. 종료하기"));
            dos.flush();


            String menu = dis.readUTF();
            if(menu.equals("1")) {

               dos.writeUTF(JOptionPane.showInputDialog("잔액조회를 선택하셨습니다.\n"
                     + "잔액 : " + dis.readUTF()));

            }else if(menu.equals("2")) {

               dos.writeUTF(JOptionPane.showInputDialog("입금하기를 선택하셨습니다."
                     + "\n얼마를 입금하시겠습니까?"));
               dos.flush();
               dos.writeUTF(JOptionPane.showInputDialog(dis.readUTF()+"원이 입금되었습니다."));

            }else if(menu.equals("3")) {

               dos.writeUTF(JOptionPane.showInputDialog("출금하기를 선택하셨습니다."
                     + "\n얼마를 출금하시겠습니까?"));
               dos.flush();

               String tf = dis.readUTF();  //출금 가능 여부 판단
               if(tf.contentEquals("false")) {
                  dos.writeUTF(JOptionPane.showInputDialog("잔액이 부족합니다."));

               }else if(tf.contentEquals("true")) {
                  dos.writeUTF(JOptionPane.showInputDialog(dis.readUTF()+"원이 출금되었습니다."));
               }


            }else if(menu.equals("4")) {

               dos.writeUTF(JOptionPane.showInputDialog("시뮬레이터를 종료합니다."));
               System.exit(0);
            }

         }


      }

   } //main 끝
}
public class UserInfo {
   private String pw;
   private String email;
   private int account;
   
   public UserInfo () {
      super();
   }
   
   public UserInfo(String pw, String email, int account) {
      this.pw = pw;
      this.email = email;
      this.account = account;
   }

   public int getAccount() {
      return account;
   }

   public void setAccount(int account) {
      this.account = account;
   }

   public String getPw() {
      return pw;
   }

   public void setPw(String pw) {
      this.pw = pw;
   }

   public String getEmail() {
      return email;
   }

   public void setEmail(String email) {
      this.email = email;
   };
   
   
}

+ Recent posts