홈으로 | 로그인 | 무료회원가입 | 포인트적립방법 및 계급정책 
자동
회원가입 | 아이디 · 비밀번호 찾기

질문과답변 월간 최다답변채택 회원

  • 아치미슬 채택답변수 (105)
  • donn 채택답변수 (44)
  • 겨울숲 채택답변수 (17)
  • 나눔의즐거움 채택답변수 (15)
  • Comms 채택답변수 (15)
  • 토렌트최고 채택답변수 (13)
  • 능글이3 채택답변수 (12)
  • vmfkdla0 채택답변수 (12)
  • 유랑천하 채택답변수 (11)
       
    [컴퓨터/인터넷]

    C언어 소켓프로그래밍 질문입니다.(소스첨부)

    글쓴이 : SOAD 날짜 : 2013-10-08 (화) 01:48 조회 : 431
    nono.zip (4.8K), 2013-10-08 01:48:42
    컴파일은 
    서버 : gcc -o server server_2.c HandleClient_2.c DieWithError.c
    클라 : gcc -o client client_2.c DieWithError.c


    소스파일 묶어서 첨부했습니다.

    파일 업로드 하는것과 디렉토리 바꾸는 것을 구현중인데
    클라가 한번 돌면 죽어버리는건 양해해주시구요..;
    파일업로드 하는데 왜그런지 모르겠는데 자꾸 세그폴트가 나네요.... 이걸 getchar로 받지 않고 아예 메뉴번호를 줘버리면
    세그폴트는 안나는데 파일이 주고받아지질 않고...
    디렉토리 바꾸는건 디렉토리 이름 받기 전에 그냥 넘어가버리고....

    뭔가 버퍼 문제인것 같은데 짐작이 안되네요. fflush(stdin)도 해보고 scanf getchar fgets 별걸 다 써봤는데 안됩니다 ㅠㅠㅠ
    귀찮으시겠지만 제발 도와주세요 ㅠㅠㅠ

    시그윈 사용중입니다.
    요청자가 자신의 600포인트를 걸었습니다. 답변이 채택되면 300포인트를 드립니다.

    글쓴이 2013-10-08 (화) 02:17
    void changeDir(DIR *dp, int clntSocket)
    {
    char echoBuffer[RCVBUFSIZE];
    Message message;
    memset(&echoBuffer, 0, sizeof(echoBuffer));
    memset(&message, 0, sizeof(Message));

    if ((recv(clntSocket, echoBuffer, RCVBUFSIZE, 0)) <0)
    DieWithError("Msg recv() failed");

    memcpy((char *)&message, echoBuffer, sizeof(message));

    message.MsgType=CDA;
    printf("%s\n", message.contents);
    dp=opendir(message.contents);

    memcpy(echoBuffer, &message, sizeof(message));

    if (send(clntSocket, echoBuffer, RCVBUFSIZE, 0) <0)
    DieWithError("Msg Send Error");
    else
    {
    printf("%s\n", message.contents);
    getcwd(message.contents, 64);
    printf("%s\n", message.contents);
    }
    }


    changeDir에서 메시지 받는걸 깜빡했습니다... 이건 추가했는데도 여전히 안되는건 마찬가지네요
    C:\\를 입력하면 멎어버리네요ㅠㅠ
    너닉넴 2013-10-08 (화) 03:09
    void HandleClient(int clntSocket)
    {
    char echoBuffer[RCVBUFSIZE];
    Message message;
    DIR *dp=NULL;

    memset(&echoBuffer, 0, sizeof(echoBuffer));

    프로그램 안한지 오래되서 좀 그런데 memset(&echoBuffer, 0, sizeof(echoBuffer)); => memset(echoBuffer, 0, sizeof(char) * RCVBUFSIZE);

    이렇게 해야하지 않나요?

    memset(&echoBuffer, 0, sizeof(echoBuffer)); 이렇게 하면 echoBuffer의 주소값이 0이 될걸요?
         
           
    글쓴이 2013-10-08 (화) 07:54
    감사합니다. 근데 그것말고도 문제가 있는것 같아요....
    recv 받는 곳에서 죄다 블럭이 걸려버리네요 ㅠㅠ
              
                
    너닉넴 2013-10-08 (화) 11:10
    블럭이 recv부분에서 걸려서 대기하는 것이라면 정상적인 동작입니다. recv 함수 자체는 비동기 함수가 아니기 때문에 데이터를 받을 때 까지 해당 함수에서 대기합니다.
    송송송님 2013-10-08 (화) 04:00
    &echoBuffer 라고 쓰게되면 포인터의 주소 자체를 뜻하고 포인터가 가르키는 주소와는 다릅니다.
    너닉넴님이 써 주신것처럼
    echoBuffer 라고 적어주시는게 맞습니다.
       

    질문과답변 질문상태  |   | 
     
    번호 제목 글쓴이 상태 포인트 날짜 조회
    [공지]  ※ 토렌트사이트질문,자료요청 금지 (질문자,답변자 같이 제재) 이토렌트
    0 08-25
    [공지]  ※ 질문과답변 게시판 이용안내 이토렌트
    0 03-28
    101111 [기타]  여기에 어울리지 않는 질문일수도 있는데 책임에 대해 궁금합니다 . (2) 스샷첨부 가을유서
    500 04:09 56
    101110 [TV/영상]  이 사진의 출처와 여자는 누구인지요? (6) 스샷첨부 하록
    200 02:19 210
    101109 [교육/학문]  4 문장만 번역 부탁드립니다. (1) 쉐이커
    900 01:46 65
    101108 [컴퓨터/인터넷]  vmware 금융 보안프로그램때문에 질문 좀 드립니다 가상키보드 안쓸수있을까요? (2) 라이언디어
    200 01:18 46
    101107 [컴퓨터/인터넷]  윈도우10 쓰는데 정말 스트레스 받네요 관리자 권한때문에 도와주세요. (5) 라이언디어
    200 01:01 170
    101106 [취미/생활]  epl 프리미어리그 축구 보는 무료 사이트가 있을까요?? (1) URii
    200 00:33 65
    101105 [전자기기]  갤럭시 탭 s3 vs a6 막둥에
    200 00:22 53
    101104 [기타]  led 형광등 잘 아시는 분? (5) vmflaos1
    300 12-13 126
    101103 [쇼핑]  카카오뱅크 옥션 결제시 캐쉬백 단일제품이 3만원 넘어야 하는건가요? (2) 차단된코멘트
    700 12-13 120
    101102 [컴퓨터/인터넷]  폴더의 주소표시줄이 시커멓게 변했어요 (3) Narga
    1000 12-13 71
    101101 [교육/학문]  혹시 영어 원어민 수준의 번역을 해주실수 있는 분 계실까요? (4) 상상속여자
    4444 12-13 110
    101100 [전자기기]  애플 키노트에서 사용되는 포인터는 무슨 제품인가요? (1) 스샷첨부 hunibuni
    1000 12-13 92
    101099 [컴퓨터/인터넷]  슬림젯 slimjet 브라우저-쇼핑몰 옵션 선택 안됨 (2) flybuter
    500 12-13 71
    101098 [전자기기]  처음으로 전기면도기를 사려고 하는데 추천 좀 부탁드립니다. (6) 테노스
    5000 12-13 122
    101097 [건강/의학]  이거 무좀인가여? (4) 스샷첨부 Clever1
    300 12-13 217
    101096 [기타]  부모님 병의 원인을 찾기가 힘드네요.. 도와주세요 ㅠ (6) 윤배앵z
    1000 12-13 158
    101095 [컴퓨터/인터넷]  오토캐드나 포토샵 무리없이 돌아가는 컴퓨터 (4) 카드놀이
    800 12-13 98
    101094 [컴퓨터/인터넷]  asrock 보드 사용 하는데 램 다른거 껴도 되나요? (2) 난젊어귀여워
    500 12-13 52
    101093 [TV/영상]  아재님들! 80년대 여가수 누군지 알려주세용! (5) 스샷첨부 aisdi22
    200 12-13 163
    101092 [컴퓨터/인터넷]  포토샵 정품을 쓰는중인데 에프터이펙트를 비정품으로 설치할수있나요? (1) 매론매론
    500 12-13 101
    101091 [컴퓨터/인터넷]  원본CD 공CD로 복사하기. (3) 조동탄
    500 12-13 154
    101090 [음악]  무한도전 ㄸ12월 2일자 뗏목한강종주 편 한강철교 방향 항해 bgm 찾습니다 (2) beeing
    1000 12-13 149
    101089 [기타]  카카오톡질문 (5) older4
    300 12-13 97
    101088 [취미/생활]  즈위프트로 자전거에 입문하고자 하는데요 달빛노을
    1000 12-13 68
    101087 [기타]  국세청에서 사업자나 개인의 현금영수증 발급내역 (1) 김재규
    500 12-13 99
    101086 [기타]  체크카드 갱신 (2) 오롤롤
    200 12-13 206
    101085 [TV/영상]  영상편집 관련 질문입니다. (6) 상상속여자
    500 12-13 59
    101084 [컴퓨터/인터넷]  __builtin_frame_address(0)함수가 ebp를 얻어오는데 실패하면 어떤 값을 반환하나요? (3) 야마히코
    1000 12-13 50
    101083 [컴퓨터/인터넷]  PC 바탕화면을 자기가 원하는 사진으로 조각조각 맞춰 만드는 프로그램 없나요? (7) 구양신공
    300 12-13 181
    101082 [경제/재테크]  마카오 환전 얼마나 해야할까요 (2) 푸르르뎅뎅
    500 12-13 106
     1  2  3  4  5  6  7  8  9  10  다음