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

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

  • 하루카헤븐 채택답변수 (123)
  • BRainbow 채택답변수 (69)
  • 이화에월담하고 채택답변수 (20)
  • 나도익명 채택답변수 (16)
  • 야이시골년아 채택답변수 (14)
  • 궁극의。변태 채택답변수 (12)
  • 오짬s 채택답변수 (12)
  • 도조 채택답변수 (11)
  • 참된자아 채택답변수 (10)
       
    [컴퓨터/인터넷]

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

    글쓴이 : SOAD 날짜 : 2013-10-08 (화) 01:48 조회 : 389
    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 11-11
    [공지]  ※ 질문과답변 게시판 이용안내 이토렌트
    0 03-28
    88951 [컴퓨터/인터넷]  피온3 렉안걸릴려면 램추가하면 될까요? 레스터시티우…
    200 23:54 1
    88950 [컴퓨터/인터넷]  윈도우 10인데 요 몇일 사이에 휴지통 딜레이 라고 해야하나. (1) 멀라임마
    300 23:49 35
    88949 [음악]  브금 좀 알려주세요 (1) 에비에엠
    200 23:30 19
    88948 [컴퓨터/인터넷]  이 24 모니터 괜찮은 모니터 인가요? (1) 푸졸스홈런
    500 22:35 93
    88947 [TV/영상]  코미디빅리그 핼머니 시작하면서 나오는 노래 (1) 펜타홀릭
    200 22:14 68
    88946 [교육/학문]  중2 평행사변형 대각선 3등분 (4) 스샷첨부 초베지트
    500 21:44 149
    88945 [컴퓨터/인터넷]  토렌트와 인터넷 연결 (2) p라파엘
    500 21:43 105
    88944 [음악]  m플레이어 업데이트 문제 해결 노래쟁이봉스
    500 21:29 30
    88943 [컴퓨터/인터넷]  1050ti 랑 1060이랑 성능차가 심할까요? (3) 처임입니다
    200 21:22 129
    88942 [취미/생활]  자동차 히터 나오는 방향 설정할 때 A/C 버튼 OFF 되게끔 하는 방법 있나요? (4) Computar
    400 20:52 95
    88941 [음악]  질문있습니다~ pc_fi 알못. (3) 모랄라
    500 20:50 55
    88940 [컴퓨터/인터넷]  그래픽카드 다른걸로 바꿨는데, 계속 업데이트하라고 뜹니다. (3) 스샷첨부 전망좋은곳
    300 20:50 59
    88939 [교육/학문]  엑셀 도움 요청드립니다. (5) 앙코
    500 20:38 57
    88938 [컴퓨터/인터넷]  윈도우10 내컴퓨터나 탐색기를켜면 아래로 내려가는데 어떻게하죠?(수정) (4) 흡혈토끼1
    500 20:31 50
    88937 [기타]  인혁당 간첩조작에대해서 (2) 태연짜앙
    200 20:23 58
    88936 [TV/영상]  TV에 볼 영화 재인코딩 하려고 합니다. (4) 스샷첨부 엄지엄지척
    500 19:45 75
    88935 [컴퓨터/인터넷]  [윈10] 토요일 18:52분만 되면 갑자기 종료가 됩니다. (3) AisHiNo
    200 18:59 96
    88934 [컴퓨터/인터넷]  바이두 질문이요 (3) azcs
    200 18:25 87
    88933 [컴퓨터/인터넷]  윈7 윈10 (3) 김수로왕
    200 17:26 237
    88932 [토렌트]  왜 시드에 붙질 못하죠? (4) 스샷첨부 나그네42
    200 16:53 135
    88931 [기타]  대전에서 월주차 가능한곳을 찾습니다 (5) 달빛노을
    5000 16:51 89
    88930 [기타]  디즈니에 나온 말인데 이름이나 혹은 어느만화에 나오는지 아시는분 ㅠㅠ (2) 스샷첨부 00700
    400 16:49 105
    88929 [기타]  청바지 빨면 줄어들까요? (1) tjaudgml
    200 16:26 144
    88928 [컴퓨터/인터넷]  AIMP 쓰시는 분 재생관련 (2) 非專門家
    374 15:39 90
    88927 [교육/학문]  파이썬 타이머가 안 돌아가네요.. (1) 한번만줘
    200 15:16 64
    88926 [컴퓨터/인터넷]  파이어폭스 사용하시는 분들께 질문 좀 할게요. (7) 스샷첨부 콤푸타
    400 14:21 108
    88925 [쇼핑]  한 외국 사이트에서 결제를 했는데 (3) 음고구마
    200 13:52 151
    88924 [컴퓨터/인터넷]  외장하드가 읽어지지가 않습니다 (F:드라이브에 디스크를 넣으십시오 라고 뜹니다) (11) 스샷첨부 형소
    500 13:30 102
    88923 [기타]  누구 사인인지좀... (4) 스샷첨부 kim121
    200 12:53 223
    88922 [음악]  H.O.T 리믹스 부분에 댄스추는부분 만드는법 알려주실분 흔남흔녀
    2500 11:57 70
     1  2  3  4  5  6  7  8  9  10  다음  맨끝