수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

해쉬테이블을 이용해 이용자들이 대기상태에 있는 프로그램을 만들어야 하는데 문제가 생겼네요.

승아

2023.04.01

해쉬 테이블의 속성을 보면
1. [키값] [밸류값]
2. [키값] [밸류값]
3. [키값] [밸류값]
이런식으로 들어가자나요?

그런데 문제가 저 밸류값에서 벡터를 생성해야 하는데요.

그러니까 클라이언트에서 대기상태에 있을 키 값과 밸류값으로 사용될 사용자 아이디가
서버로 넘어오면
서버는클라이언트가 보내준키 값을 해쉬테이블에서 찾습니다.
서버에서 해쉬테이블의 키 값을 못찾으면 키 값을 넣고
밸류값으로 벡터를 생성해서 그 벡터의 인덱스 순서대로 사용자가 들어가 대기하게 됩니다.

만약 키 값을 찾으면 그 키값의 밸류값인 벡터에 다음대기자로 들어가가게 되구요.

즉 해쉬테이블이
1.[키값], 밸류값 -- [벡터 0번째 인덱스, 벡터 1번째 인덱스.....]
2.[키값], 밸류값 -- [벡터 0번째 인덱스, 벡터 1번째 인덱스.....]
만약 키값이 없으면
해쉬테이블에 그 키 값을 넣고....밸류값에 벡터를 생성한 후 벡터의 0번째 인덱스에 사용자의 아이디를 넣습니다.

만약 키 값이 있으면
그 키 값에 맞는 벡터에서 벡터에 add메소드로 다음 인덱스에 사용자의 아이디를 넣어 대기상태가 됩니다.

[키 값] [1벡터]
[키 값] [2벡터]
[키 값] [3벡터]

if(키 값이 없으면)
put(키 값, 벡터생성후 0번째 인덱스에 사용자 아이디 입력)
else (키 값이 있으면)
put(그 키값에 맞는 벡터의 다음 인덱스에 사용자 아이디 입력)

이런식으로 프로그래밍을 해야 하는데......
이게 어떻게 해야할지 오늘 하루종일 헤메도 안되네요.....

제가 처음부터 생각을 잘못한건지.....
아니면 방법이 있는데 제가 못찾고 있는건지...
너무 답답하네요.....;;

서버프로그램의 소스를 보여드리자면....

import java.io.*;
import java.net.*;
import java.util.*;
public class Attend_Server
{
private ServerSocket server = null;
private Vector first_divide = new VectorObject (), hash_S_number = new VectorObject();
private Hashtable hash = new Hashtable();
private Object key_C_number;
public Attend_Server()
{
} // end 생성자
public void process()
{
try
{
server = new ServerSocket(9000);
}
catch(IOException ex)
{
ex.printStackTrace();
}
while(true)
{
try
{
Socket con = server.accept();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
bis = new BufferedInputStream(con.getInputStream());
bos = new BufferedOutputStream(con.getOutputStream());
byte buf[] = new byte[256];
int len = 0;
String str = ;
while((len = bis.read(buf, 0, buf.length)) != -1)
{
str = new String(buf, 0, len);
bos.write(buf, 0, len);
bos.flush();
if(str.indexOf(\n) != -1)
{
StringTokenizer st = new StringTokenizer(str, \n);
str = st.nextToken();
break;
}
p; }
System.out.println(받은 메시지 + str);
StringTokenizer st = new StringTokenizer(str, =);
first_divide.clear();
while(st.hasMoreTokens())
{
first_divide.add(st.nextToken());
}
System.out.println(first_divide.get(0));
System.out.println(first_divide.get(1));

key_C_number = (String)hash.get(first_divide.get(0));

if(key_C_number == null)
{
hash.put(first_divide.get(0), hash_S_number.add(first_divide.get(1))); // hash_S_number.add(first_divide.get(1)) --이게 아니고여기에서 벡터를 생성해야 합니다.
}
else
{
if(hash.containsKey(first_divide.get(0)))
{
hash_S_number.add(first_divide.get(1)); // 여기에서도 키 값에 일치하는 벡터를 찾아서 그 벡터의 다음 인덱스에 사용자아이디를 넣어야 합니다.
}
}
key_C_number = null;
bos.close();
bis.close();
} // end try
catch(IOException ex)
{
ex.printStackTrace();
}
} // end while(true)
} // public void process()
public static void main(String[] args)
{
Attend_Server as = new Attend_Server();
as.process();
}
} // end public class Attend_Server

제 생각이 잘못되었다면 보통
여러개의 키 값을 가지는 사용자대기상태를 어떻게 만드는지 알고리즘만 알려주세요.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 화1이트

    공지보시고, 다시 질문 작성하세요. 다음번에는 그냥 영구제명하겠습니다.

번호 제 목 글쓴이 날짜
2695984 마크업상으로 하단에 있으나 우선적으로 이미지파일을 다운로드받는 방법 (1) 들꿈 2025-05-25
2695934 tr 속성값 (9) 새 2025-05-25
2695905 ASP로 개발됐을 때 css가 달라져요 ㅠㅠ (4) 슬아라 2025-05-24
2695878 form을 이용한 다른 페이지로 넘기는 방법을 알려주세요 (1) 핫파랑 2025-05-24
2695844 저기 암호화 및 복호화 프로그램.. 만들어볼려는대 (2) 한빛 2025-05-24
2695814 [질문] PDA에서 애플릿이 가능한가요? (1) 봄시내 2025-05-24
2695785 웹 설정 도와줄분 화이트캣 2025-05-23
2695730 갑자기 기억이 안나는데 accesskey 속성.. 빛나라 2025-05-23
2695702 [질문] Java 버전 차이에 의한 오류?!! (2) 검사 2025-05-23
2695672 자바 임베디드 쪽으로 배우고 싶은데요..질문이요.. (1) 뽀그리 2025-05-22
2695647 헉! 이클립스(v3.1)에서 발생되는 널포인트 익셉션? ;;; (3) 아빠몬 2025-05-22
2695586 IFRAME 캐싱 질문 봄나비 2025-05-22
2695498 [질문]실행가능한 jar파일.. 정말 이해가 안가네요... ㅡㅜ;; 터1프한렩 2025-05-21
2695468 자바랑 이클립스에서요.. 스킬 2025-05-21
2695375 Mysql 연동하는 자바 질문있습니다. 아리솔 2025-05-20
2695319 파워포인트 파일을 저장할 수 있을까요? 시윤 2025-05-19
2695289 [질문]Tween 값의 정도를 알고 싶습니다. 타마 2025-05-19
2695238 c 와 c++의 시작 (10) ChocoHoilc 2025-05-18
2695215 탑메뉴의 repeat-x .배경이 두가지에요ㅠ ㅠ 널위해 2025-05-18
2695187 자바스크립트와 자바의 import에 관해서 질문드려요 (1) 무슬 2025-05-18
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com