자바(deprecated)/network
store
by monkey-k777
2019. 6. 10.
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])) {
}
}
}
}