모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 게시물ID : science_3468
    작성자 : 행인Ω
    추천 : 0
    조회수 : 966
    IP : 110.46.***.161
    댓글 : 3개
    등록시간 : 2010/12/07 21:48:24
    http://todayhumor.com/?science_3468 모바일
    C++ 능력자분들 도움좀 주세요 ㅠㅜ
    제가 지금 <winsock2.h>를 이용해서 서버랑 클라이언트를 구현하려는데요

    분명 계산상으로는 패킷이 맞는데 서봐와 클라이언트 둘다 동시에 리시브상태에 들어서는 사태가 발생하네요 ㅠㅜ

    일단 개략적인 소스는

    server----------------------------

    void User::Run() //관리자 쓰레드에서 돌아갈 Run 멤버 함수
    {
    char buf[BUFFER]; //입출력 버퍼
    cout<<"start admin"<<endl;
    string temp = "";
    temp += "수행하고자 하는 명령어를 입력해 주세요.(명령어를 알고 싶다면 help를 입력하세요.)\n";
    temp += ">>";
    memset(buf,0x00,BUFFER);   //버퍼 초기화
    memcpy(buf,temp.c_str(),temp.size()); //버퍼에 출력할 문자열 복사
    send(*admin,buf,BUFFER,0);  //전달, 여기서 에러
    temp.clear();
    try{
    while(true)
    {//명령을 반복적으로 받아서 명령 처리 멤버함수에 전달
    char buf[128] = "";
    string command = "";

    recv(*admin,buf,BUFFER,0);

    this->command(*(new string(buf)));
    send(*admin,END,strlen(END),0);
    }
    }
    catch(exception e)
    {//명령처리 함수에서 에러(종료신호, 소켓연결 끊어짐)를 던지면 쓰레드 함수 종료
    }
    }

    void User::connectUser(SOCKET  *client)
    {
    char buf[BUFFER] = "ID :"; //입출력버퍼 생성과 출력 자료 초기화
    send(*client,buf,BUFFER,0); //버퍼 전송
    send(*client,END,BUFFER,0); //전송파일 끝 신호 전송

    recv(*client,buf,BUFFER,0); //자료 리시브, 자료는 ID의 문자열값
    int ID = 0; //ID는 숫자로만 이루어지게 만들어져서 숫자로 치환
    char dex[10] = {'0','1','2','3','4','5','6','7','8','9'};
    for(int i = 0, a = 100000; i < strlen((const char *)buf) ;i++)
    {
    for(int j=0;j<10;j++)
    {
    if(buf[i] == dex[j])
    {
    ID += j * a;
    break;
    }
    }
    a /= 10;
    if(a < 1) break;

    if(ID == 0) //관리자 ID는 000000이라 숫자로 0
    {
    if(admin != NULL) closesocket(*admin);
    this->admin = client;
    memset(buf,0x00,BUFFER); //버퍼 초기화
    memcpy(buf,"암호 :",strlen("암호 :")); //문자열 세팅
    send(*admin,buf,BUFFER,0); //버퍼전송
    memset(buf,0x00,BUFFER); //버퍼초기화
    memcpy(buf,END,strlen(END)); //종료신호 셋팅
    send(*admin,buf,BUFFER,0); //전송
    while(true)
    {
    char pass[BUFFER] = ""; //암호 입력 버퍼
    recv(*admin,pass,BUFFER,0); //암호 리시브
    if(password == *(new string(pass))) //암호 확인
    {
    break; //암호 재확인 안함
    }
    char *msg = "암호가 틀렸습니다.\n암호 :"; //암호 재확인, 위와 동일
    memset(buf,0x00,BUFFER);
    memcpy(buf,msg,strlen(msg));
    send(*admin,msg,BUFFER,0);
    memset(buf,0x00,BUFFER);
    memcpy(buf,END,strlen(END));
    send(*admin,END,BUFFER,0);
    }
    this->Begin();//관리자 쓰레드 시작
    }
    }



    client--------------------------

    while(true)// 반복해서 리시브와 샌드
    {
    char buf[BUFFER];  //입출력 버퍼
    memset(buf,0x00,BUFFER); //초기화
    recv(client,buf,BUFFER,0); //리시브
    if(buf[0] == 'E' && buf[1] == 'N' && buf[2] == 'D')
    {//만약 리시브한 신호가 리시브 종료 신호라면 
    cin>>str; //표준입력, str은 string클래스로 초기에 선언되어있음
    memcpy(buf,str.c_str(),str.size()); //버퍼에 복사
    send(client, buf,BUFFER,0); //샌드
    }
    else
    {
    cout<<buf; //샌드하지 않을때는 리시브한 버퍼 출력
    }
    }

    전반적인 소스는 이런데 오류가 생기는 부분이 서버의 유저클래스가 쓰레드거든요

    그런데 인수로 받은 클라이언트와 받은 소켓을 멤버변수에 저장하고 쓰레드를 실행하면

    쓰레드에서 샌드를 못하고 클라이언트에서 리시브를 못하네요 ㅠㅜ

    뭐가 문제인걸까요;

    이 게시물을 추천한 분들의 목록입니다.
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    68873
    식기들 끓는물 소독 & 다시 흐르는 물에 씻기 [2] 눙물이눙물이 24/11/22 12:29 748 2
    68872
    질문? 대기권 재진입 내열타일 실험할 때 산소도 공급하나요? [3] Young.K 24/11/21 15:31 530 2
    68871
    현직 물리학 교수가 올린 수학 잘하는 법 [3] 제임스Bond 24/11/20 18:04 826 1
    68870
    아인슈타인도 예측하지 못했던 천체현상의 발견 [3] ㅗㅠㅑ 24/11/11 16:43 1023 3
    68869
    수십1년간 묵혀졌던 궁금증이 ChatGPT를 통해 해소 됐습니다. [2] ㅗㅠㅑ 24/11/10 22:56 1187 3
    68868
    0.9999.... = 1 그럼 ....999999999 는??? [4] Young.K 24/11/08 14:47 1023 3
    68866
    이 덩치큰녀석 언제 다 올렸지 신기하다 [3] dogcat 24/11/05 16:11 1077 2
    68865
    우리가 사는 세상이 가상현실이라는 증거 [1] ㅗㅠㅑ 24/11/05 13:26 960 3
    68864
    대기 중 CO2 획기적 제거 신물질 'COF-999' 개발 "눈길" [5] 펌글 우가가 24/11/04 00:01 1057 3
    68863
    김범준 교수님이 했던 기억에 남는말, 물질이 빛보다 빠를 수 없는 이유 [2] Oh_My!_Girl 24/10/29 16:57 1206 2
    68861
    귀신(?)에 대한 공포는 사람이 아닌 다른 동물들도 마찬가지인걸까요? [2] Oh_My!_Girl 24/10/28 11:29 1136 2
    68856
    물리학에서 질량은 우주어디에서나 변함없이 같다 .특수상대성이론은 [4] dogcat 24/10/21 20:41 1152 0
    68855
    우주의 크기는 대략 140억광년이다. [6] dogcat 24/10/21 20:03 1438 2
    68854
    블랙홀과 열역학 [4] 달음 24/10/17 00:24 1469 0
    68853
    음식무게와 살찌는 체중증가의 관계? [6] 리버풀7 24/10/16 20:57 1248 0
    68852
    [도움] 수학문제 풀이가능하신분 ! [5] 유전자몰빵 24/10/09 17:06 1366 0
    68851
    [잡설] 양자얽힘과 초공간과 암흑물질과. [2] Young.K 24/10/01 22:39 1494 0
    68850
    음악 자주 듣는 분들 과학적 꿀팁 [2] 사나이직각 24/09/28 22:49 1687 2
    68848
    등가원리가 맞다면, 가속도 운동도 시공간휨을 발생시키는가? [2] 본인삭제금지 arevo 24/09/22 01:00 1657 1
    68847
    폴라리스 던. 극궤도 유인 탐사 1400km 돌파! +EVA [1] 펌글 Young.K 24/09/11 17:45 1625 0
    68846
    무한히 작은 확률을 31%까지 끌어올리는 방법 [2] 펌글 우가가 24/09/04 23:14 2281 5
    68845
    [소식] 스타라이너 스피커에서 나는 소리가 해결되었다고 합니다. [2] Young.K 24/09/02 11:04 1965 1
    68844
    [펌] 시카노코노코노코 Young.K 24/08/31 17:16 1782 1
    68843
    프리 노벨상 인체물리학 24/08/30 10:39 1787 0
    68842
    안녕하세요 오랜만에 질문드리네요! 삼차함수 미분문제 풀어주실분 계실까요? [2] 창작글본인삭제금지 난선생너학생 24/08/29 14:39 1760 1
    68841
    [펌] 팰컨9 B1062 부스터가 착륙에 실패하여 파괴되었습니다(추가3) [2] Young.K 24/08/29 00:52 1948 1
    68840
    [펌] 스타라이너 승무원들은 Crew-9으로 복귀합니다. [4] Young.K 24/08/25 04:07 2146 1
    68839
    비행기가 뜨는 양력 이론 쉽게 이해 하기. [11] 나비의아이 24/08/14 06:50 2485 3
    68838
    슈퍼컴퓨터로 지진운의 과학적 입증? [6] 나비의아이 24/08/14 04:52 2328 0
    68837
    [펌] 보잉 스타라이너 CST-100 승무원 대체 귀환 고려 중. [6] 펌글 Young.K 24/08/08 18:33 2260 1
    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈