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

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

  • 이토님 채택답변수 (56)
  • donn 채택답변수 (28)
  • 이화에월담하고 채택답변수 (27)
  • 나도익명 채택답변수 (26)
  • 김재규 채택답변수 (18)
  • vmfkdla0 채택답변수 (16)
  • 유랑천하 채택답변수 (11)
  • Jegilson 채택답변수 (10)
  • Room3 채택답변수 (10)
       
    [컴퓨터/인터넷]

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

    글쓴이 : SOAD 날짜 : 2013-10-08 (화) 01:48 조회 : 416
    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 04-24
    [공지]  ※ 모바일 글쓰기를 지원합니다. 이토렌트
    0 04-09
    [공지]  ※ 추가답변채택 기능을 지원합니다. 이토렌트
    0 04-20
    [공지]  ※ 토렌트사이트질문,자료요청 금지 (질문자,답변자 같이 제재) 이토렌트
    0 08-25
    [공지]  ※ 질문과답변 게시판 이용안내 이토렌트
    0 03-28
    94442 [전자기기]  플스4 게임 리뷰 많은곳 (2) 로직큐브
    333 15:26 62
    94441 [취미/생활]  아크릴잉크로 유화처럼 표현 songC
    300 15:06 43
    94440 [컴퓨터/인터넷]  모니터 추천부탁 요로로롱
    500 14:43 35
    94439 [기타]  연차수당 계산에 대해서 질문입니다. (2) 로일당
    500 14:42 45
    94438 [경제/재테크]  돈빌려줄떄 (8) smileaga
    200 14:01 131
    94437 [취미/생활]  갱년기 증상에 도움이 되는게 머가 있을까요? (3) 인생무상07
    500 12:20 77
    94436 [취미/생활]  섬유유연제는 꼭 써야 되는 건가요? (3) 인생무상07
    300 12:15 171
    94435 [컴퓨터/인터넷]  ccleaner 이거 결제하면 평생 인가요? (4) 초보규
    300 12:12 133
    94434 [기타]  오픈 예정인 점포를 미리 알 수 있는 방법이 없을까요? (3) 루기아
    300 11:52 63
    94433 [TV/영상]  동계스포츠 관련 다큐, 영화, 영상등 추천부탁드립니다~~ (1) 핵꿀밤나서스
    500 10:42 39
    94432 [컴퓨터/인터넷]  파이어 폭스에서 디스코드 사이트 Lanto
    250 08:55 84
    94431 [토렌트]  토렌ters 사이트에 도서 부분이 왜 없어졌는지 아시는 분? (1) 김광현111
    200 08:16 121
    94430 [컴퓨터/인터넷]  C 언어 goto 함수 이용 (6) 바람구멍
    1000 04:16 212
    94429 [컴퓨터/인터넷]  새 하드 디스크 검사 관련 질문 (4) 大器晩成
    1000 02:49 151
    94428 [컴퓨터/인터넷]  윈도우 정품인지 확인하려면? (8) Smile에스
    200 02:22 238
    94427 [건강/의학]  대변을 봤는데요... (2) 착한선임
    300 01:28 384
    94426 [게임]  스팀 결제를 할 때의 궁금점 (2) 에로이
    200 05-23 181
    94425 [컴퓨터/인터넷]  skin.exe.php 인클루드 하면 카테고리 링크가 없어집니다 (3) 오래전에
    300 05-23 70
    94424 [컴퓨터/인터넷]  윈도우 비트 변경 (4) 까순이
    400 05-23 163
    94423 [전자기기]  와이파이 질문좀드릴게요. (5) 이하늬다
    500 05-23 160
    94422 [컴퓨터/인터넷]  한글 2010 온점(.) 크기조절 (3) 갑돌s
    200 05-23 156
    94421 [전자기기]  전구장식 조명 잘 아시는분? (4) 구리스폴
    1000 05-23 91
    94420 [기타]  기업 바이두란 것도 있네여.. ㅋㅋ.. (2) kim박
    500 05-23 193
    94419 [경제/재테크]  연말정산 문의드려요 (1) 토렌트slave
    200 05-23 141
    94418 [교육/학문]  각도 구하는 수학(산수) 문제 부탁드려요 (8) 스샷첨부 오래전에
    200 05-23 149
    94417 [음악]  일렉기타모델을 찾아요 (1) 재즈잭래빗
    300 05-23 157
    94416 [컴퓨터/인터넷]  유튜브 다운로드 프로그램 어떤 걸 이용해야 할 지 도와주세요 (8) 파인만
    300 05-23 133
    94415 [전자기기]  스마트폰 아무 통신사에서나 사용 가능한가요? (5) 보일락말락
    1000 05-23 125
    94414 [전자기기]  아이툴즈 대신하는 프로그램이나 아이툴즈 무료 사용법좀 알려주세요 ㅌㅅㄹ
    200 05-23 80
    94413 [경제/재테크]  저신용자 대출 서류 관련 문의 (1) 사토끼
    500 05-23 103
     1  2  3  4  5  6  7  8  9  10  다음