package demo.store;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class StoreClient {

	public static void main(String[] args) throws Exception {
		Scanner scanner = new Scanner(System.in);              // 사용자의 입력을 받는다.
		
		Socket socket = new Socket("192.168.10.254", 8000);    // 서버에 연결요청을 보낸다.
		
		PrintWriter out = new PrintWriter(socket.getOutputStream(), true); // 서버로 메시지 보낼 때 사용
		BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

		boolean isLogin = false;
		
		while (true) {
			if (!isLogin) {
				System.out.println("1. 가입 2. 로그인 0. 종료");
			} else {
				System.out.println("3. 목록조회 4. 상세조회 5. 장바구니조회 6. 장바구니 담기 7. 내정보 보기 8. 비밀번호 변경 9. 로그아웃 0. 종료");
			}
			
			System.out.println("메뉴 선택> ");
			int selectNo = scanner.nextInt();
			
			if (selectNo == 0) {
				System.out.println("프로그램 종료");
				break;
			} else if (selectNo == 1) {
				// 아이디, 이름, 비밀번호 입력받기
				System.out.println("아이디> ");
				String id = scanner.next();
				System.out.println("비밀번호> ");
				String password = scanner.next();
				System.out.println("이름> ");
				String name = scanner.next();
				
				
				// 입력받은 아이디, 비밀번호, 이름을 서버로 보내기
				out.println("add_user:" + id + ":" + password + ":" + name);
				
				// 서버가 보낸 응답 받기
				// 응답 메시지 화면에 표시하기
				String message = in.readLine();
				System.out.println("응답메시지: " + message);
				
			} else if (selectNo == 2) {
				System.out.println("아이디> ");
				String id = scanner.next();
				System.out.println("비밀번호> ");
				String password = scanner.next();

				out.println("login_user:" + id + ":" + password);
				
				String message = in.readLine();
				System.out.println("응답메시지: " + message);
				
				String[] s = message.split(":");
				if (s[1].equals("success")) {
					isLogin = true;
				}
				
			} else if (selectNo == 3) {
				out.println("view_products");
				
				String message = in.readLine();
				/* Ver1
				String resSubstract = message.substring(18);
				String[] splitted = resSubstract.split(":");
				
				for (int i=0; i < splitted.length; i++) {
				String[] splitted2 = splitted[i].split(",");
					for (int j=0; j<splitted2.length; j++) {
						System.out.println(splitted2[j]);
					}
				}
				*/
				
				
				/* Ver2
				String[] splitted = message.split(":");
				
				for (int i=1; i < splitted.length; i++) {
					String[] splitted2 = splitted[i].split(",");
					for (int j=0; j<splitted2.length; j++) {
						System.out.println(splitted2[j]);
					}
				}
				*/
				
				// Ver3
				String[] a = message.substring(18).split(":");
				for (int i=0; i < a.length; i++) {
					String b[] = a[i].split(",");
					System.out.println("상품번호: " + b[0]);
					System.out.println("상품명: " + b[1]);
					System.out.println("가격: " + b[2]);
				}
				
				
			} else if (selectNo == 4) {
				System.out.println("제품번호 입력>");
				int productNo = scanner.nextInt();
				out.println("detail_product:" + productNo);
				
				String message = in.readLine();
				System.out.println(message);
				
			} else if (selectNo == 5) {
				out.println("view_cart");
				
				String message = in.readLine();
				System.out.println(message);
				
			} else if (selectNo == 6) {
				System.out.println("제품번호 입력>");
				int productNo = scanner.nextInt();
				System.out.println("수량 입력>");
				int amount = scanner.nextInt();
				out.println("add_cart:" + productNo + ":" + amount);
				
				String message = in.readLine();
				System.out.println("응답메시지: " + message);
				
			} else if (selectNo == 7) {
				out.println("view_user");
				
				String message = in.readLine();
				System.out.println("응답메시지: " + message);
				
			} else if (selectNo == 8) {
				String oldPassword = scanner.next();
				String newPassword = scanner.next();
				out.println("change_pwd:" + oldPassword + ":" + newPassword);
				
				String message = in.readLine();
				System.out.println("응답메시지: " + message);
				
			} else if (selectNo == 9) {
				out.println("logout_user");
				
				String message = in.readLine();
				System.out.println("응답메시지: " + message);
			}
		}
	}
}
package demo.store;

import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;

public class Server {

	public static void main(String[] args) throws Exception {
		
		ServerSocket server = new ServerSocket(8000);
		ArrayList<User> users = new ArrayList<User>();
		ArrayList<Product> products = new ArrayList<Product>();
		ArrayList<Item> carts = new ArrayList<Item>();
		
		User session = null;
		
		while (true) {
			
			Socket socket = server.accept();
			
			// 스트림 연결
			
			// 클라이언트가 보낸 메세지 읽기
			String text = in.readLine();
			
			String[] values = text.split(":");
			// 메세지 해석 add_user:hong:zxcv1234:홍길동
			//             view_carts
			//             detail_product:100
			if ("add_user".equals(values[0])) {
				// 전달된 값을 User객체 생성해서 담고
				// User객체를 위에서 생성한 ArrayList에 담기
				
				// 클라이언트에 응답보내기
				out.println("res_add_user:success");
				
			} else if ("login_user".equals(values[1])) {
				
			}
		}
	}
}

'자바 > network' 카테고리의 다른 글

thread  (0) 2019.06.10
sync  (0) 2019.06.10
simpleClient  (0) 2019.06.10
mallClient  (0) 2019.06.10
file  (0) 2019.06.10

+ Recent posts