로그인, 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;
};
}
'디지털 컨버전스 > JAVA' 카테고리의 다른 글
[Java] Thread , 익명 inner class, Server-Client 쓰레드 채팅, 다중접속 (0) | 2020.03.10 |
---|---|
[Java] review , File, 네트워크 - 채팅하기, 파일전송 (0) | 2020.03.09 |
[Java] List , Set, Map (0) | 2020.02.24 |
[ 프로그래밍 언어활용] 2020-02-21 시험 (0) | 2020.02.21 |
[프로그래밍 언어 활용] 2020.02.21 시험대비 (0) | 2020.02.20 |