모바일 오유 바로가기
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도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    semitan님의
    개인페이지입니다
    가입 : 11-01-28
    방문 : 979회
    닉네임변경 이력
    회원차단
    회원차단해제
    게시물ID : programmer_6789
    작성자 : semitan
    추천 : 0
    조회수 : 9047
    IP : 211.117.***.210
    댓글 : 3개
    등록시간 : 2014/11/27 19:18:30
    http://todayhumor.com/?programmer_6789 모바일
    리눅스 TCP에서 클라이언트 -> 서버 파일 전송 질문입니다.
    옵션
    • 베스트금지
    • 본인삭제금지
    <div style="display:inline-block;"> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">혼자서 끙끙 알면서 했는데 이유를 모르겠습니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">TCP로 클라이언트가 100MB 이상 되는 파일을 서버로 전송하는 프로그램입니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">클라이언트 - (파일) -> 서버</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">처음에는 표준 입출력 함수(파일포인터, fread, fwrite) 부분만 썼는데 file의 일부분만 전송되고 <20MB ~ 60MB사이로 파일 실행마다 달라짐></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">그다음에는 system call을 이용해서 write, read를 썼는데 server쪽에서 파일을 읽지 못했습니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">이번 수업에 PPT 내용을 보니 표준 입출력 함수를 통해 데이터 전송을 하기 위해서는</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">파일 디스크립터를 파일 포인터로 만들어야 된다고 해서 </div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">수업 중 배운 fdopen을 이용했는데  server쪽에서 file을 읽지 못합니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">어떠한 점이 잘못됬는지 알려주시면 감사하겠습니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">main 함수에는 TCP 연결 부분만 있고</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">전송부분은 함수로 따로 만들었습니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">아래는 code입니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"> <div style="display:inline-block;"> <div><br></div> <div> <table style="font-size:13px;font-family:NanumGothicCoding, '나눔고딕코딩', '나눔고딕', NanumGothic, '돋움', Dotum;white-space:nowrap;" border="0" cellpadding="0" cellspacing="0"><tbody><tr style="margin:0px;padding:0px;"><td style="color:#888888;margin:0px;padding:0px 3px;text-align:right;border-right-width:3px;border-right-style:solid;border-right-color:#0099cc;"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> <div>10</div> <div>11</div> <div>12</div> <div>13</div> <div>14</div> <div>15</div> <div>16</div> <div>17</div> <div>18</div> <div>19</div> <div>20</div> <div>21</div> <div>22</div> <div>23</div> <div>24</div> <div>25</div> <div>26</div> <div>27</div> <div>28</div> <div>29</div> <div>30</div></td> <td style="margin:0px;padding:0px 3px;color:#010101;" nowrap> <div style="background-color:#f7f7f7;"><font color="#999999">//server.c 의 파일 송신 부분</font></div> <div>void trans_file (int sd) <font color="#999999">//sd는 client socket</font></div> <div style="background-color:#f7f7f7;">{</div> <div>        char buffer[BUFSIZE]; <font color="#999999">//BUFSIZE는 1024로 define 되어 있음</font></div> <div style="background-color:#f7f7f7;">        int fd; <font color="#999999">//파일 디스크립터</font></div> <div>        FILE *writefp; <font color="#999999">//파일 포인터 (파일 디스크립터를 가리키는 포인터)</font></div> <div style="background-color:#f7f7f7;">        FILE *readfp; <font color="#999999">//파일 포인터 (소켓을 가리키는 포인터)</font></div> <div>        </div> <div style="background-color:#f7f7f7;">        fd = open(<font color="#993333">"test2.mp4"</font>, O_WRONLY|O_CREAT|O_TRUNC); <font color="#999999">//파일 오픈</font></div> <div> </div> <div style="background-color:#f7f7f7;">        writefp = fdopen(fd, <font color="#993333">"w"</font>);  <font color="#999999">//파일 포인터와 파일 디스크립터 연결</font></div> <div>        readfp = fdopen(sd, <font color="#993333">"r"</font>);  <font color="#999999">//파일 포인터와 소켓 연결</font></div> <div style="background-color:#f7f7f7;">        int i = 0;</div> <div>        while (1)</div> <div style="background-color:#f7f7f7;">        {</div> <div>                i++;</div> <div style="background-color:#f7f7f7;">                printf(<font color="#993333">"%d \n"</font>, i); <font color="#999999">//송신 되는지 확인</font></div> <div>                fgets(buffer,BUFSIZE,readfp);  <font color="#999999">//소켓을 통해 전송된 내용을 buffer에 저장</font></div> <div style="background-color:#f7f7f7;">                if (strstr (buffer, <font color="#993333">"end"</font>) == 0)  <font color="#999999">//송신이 끝나면 client가 end 전송</font></div> <div>                {</div> <div style="background-color:#f7f7f7;">                        printf(<font color="#993333">"Transfer completion\n"</font>);</div> <div>                        break;</div> <div style="background-color:#f7f7f7;">                }</div> <div>                fputs(buffer,writefp); <font color="#999999">//buffer에 저장된 내용을 test2.mp4로 저장</font></div> <div style="background-color:#f7f7f7;">        }</div> <div> </div> <div style="background-color:#f7f7f7;">        fclose (writefp);</div> <div>        fclose (readfp);</div> <div style="background-color:#f7f7f7;">        return;</div> <div>}</div></td></tr></tbody></table></div></div></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div> <div style="display:inline-block;"> <div> <table style="font-size:13px;font-family:NanumGothicCoding, '나눔고딕코딩', '나눔고딕', NanumGothic, '돋움', Dotum;white-space:nowrap;" border="0" cellpadding="0" cellspacing="0"><tbody><tr style="margin:0px;padding:0px;"><td style="color:#888888;margin:0px;padding:0px 3px;text-align:right;border-right-width:3px;border-right-style:solid;border-right-color:#0099cc;"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> <div>10</div> <div>11</div> <div>12</div> <div>13</div> <div>14</div> <div>15</div> <div>16</div> <div>17</div> <div>18</div> <div>19</div> <div>20</div> <div>21</div> <div>22</div> <div>23</div> <div>24</div> <div>25</div> <div>26</div> <div>27</div> <div>28</div> <div>29</div> <div>30</div> <div>31</div></td> <td style="margin:0px;padding:0px 3px;color:#010101;" nowrap> <div style="background-color:#f7f7f7;"><font color="#999999">//client.c 파일의 파일 전송 부분</font></div> <div>void trans_file(int sd)<font color="#999999">//sd는 소켓</font></div> <div style="background-color:#f7f7f7;">{</div> <div>        int fd; <font color="#999999">//파일 디스크립터</font></div> <div style="background-color:#f7f7f7;">        FILE *readfp; <font color="#999999">//파일 포인터 (test.mp4를 읽음)</font></div> <div>        FILE *writefp; <font color="#999999">//파일 포인터 (server로 전송)</font></div> <div style="background-color:#f7f7f7;">        fd = open(<font color="#993333">"test.mp4"</font>, O_RDONLY); <font color="#999999">//파일 오픈</font></div> <div>        if (fd == -1) <font color="#999999">// 에러 처리</font></div> <div style="background-color:#f7f7f7;">        {</div> <div>                printf(<font color="#993333">"file open error \n"</font>);</div> <div style="background-color:#f7f7f7;">                exit(1);</div> <div>        }</div> <div style="background-color:#f7f7f7;">        char buffer[BUFSIZE]; <font color="#999999">//BUFSIZE는 1024로 define</font></div> <div> </div> <div style="background-color:#f7f7f7;">        readfp = fdopen(fd, <font color="#993333">"r"</font>);  <font color="#999999">//파일 포인터와 파일 디스크립터 연결</font></div> <div>        writefp = fdopen(sd, <font color="#993333">"w"</font>); <font color="#999999">//파일 포인터와 소켓 연결</font></div> <div style="background-color:#f7f7f7;"> </div> <div>        int i = 0; <font color="#999999">//전송 되나 확인</font></div> <div style="background-color:#f7f7f7;">        while(!feof(readfp))</div> <div>        {</div> <div style="background-color:#f7f7f7;">                i ++;</div> <div>                printf(<font color="#993333">"%d\n"</font>, i);</div> <div style="background-color:#f7f7f7;">                fgets(buffer,BUFSIZE,readfp); <font color="#999999">//test.mp4 파일을 BUFSIZE만큼 읽음</font></div> <div>                fputs(buffer,writefp); <font color="#999999">//buffer 내용을 소켓에 전송</font></div> <div style="background-color:#f7f7f7;">                fflush(writefp);</div> <div>        }</div> <div style="background-color:#f7f7f7;"> </div> <div>        fputs (<font color="#993333">"end"</font>, writefp); <font color="#999999">//파일 전송이 끝나면 end를 보내 server.c의 반복문 종료</font></div> <div style="background-color:#f7f7f7;"> </div> <div>        return;</div> <div style="background-color:#f7f7f7;">}</div></td></tr></tbody></table></div></div></div> <div><br></div> <div>client측 실행 화면</div> <div> <div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201411/1417083315g85oOwpgjCFoRLYXXQuLfqIXGgI.png" width="800" height="450" alt="1.png" class="chimg_photo" style="border:none;"></div> <div style="text-align:left;"><br></div> <div style="text-align:left;">server측 실행 화면</div> <div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201411/1417083315WCG9PZ8lAnfKhcRcG.png" width="239" height="51" alt="2.png" style="border:none;"></div> <div style="text-align:left;"><br></div> <div style="text-align:left;">ls -l 명령어 실행 시</div> <div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201411/1417083315ai1WbXmJBasevIrV.png" width="620" height="165" alt="3.png" style="border:none;"></div><br></div> <div><br></div> <div><br></div> <div><br></div></div>

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

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

    번호 제 목 이름 날짜 조회 추천
    64
    조인성선수에 대해 다시 생각하네요 semitan 16/04/15 22:29 15 0
    63
    레전더리 무기 남법으로 받았다고!! [1] semitan 15/08/27 10:04 147 1
    62
    상자에서 나오는 트레져헌터 뭐에요? ㅡㅡ [2] semitan 15/08/23 17:47 143 0
    61
    누군가는 궁금해 할지도 모르는 그란디네 노말 노가다 결과 [2] semitan 15/08/15 01:21 200 2
    60
    환영 무기 계정 창고에 두면 어떻게 되요? [6] 본인삭제금지 semitan 15/08/12 09:07 225 0
    59
    안드로이드 소켓 통신 질문있습니다. [3] 본인삭제금지 semitan 15/06/19 03:47 30 0
    58
    운동 후 수면시간이 말도 안되게 깁니다.. [4] semitan 15/01/09 15:55 65 0
    리눅스 TCP에서 클라이언트 -> 서버 파일 전송 질문입니다. [3] semitan 14/11/27 19:18 22 0
    56
    c++ 숫자열 질문드립니다 ㅠㅠ [9] semitan 14/11/01 19:29 32 0
    55
    지금 와서 가장 기억에 남는 경기.. [2] semitan 14/10/16 11:22 19 0
    54
    내친김에 5할 달성했으면 좋겠습니다 [1] semitan 14/10/07 17:15 20 4
    53
    (java) 배열 범위 에러 이유를 모르겠습니다. [6] semitan 14/10/03 13:06 36 0
    52
    그래도 피드백이 어느정도 되서 다행이네요 [4] semitan 14/10/02 01:18 230 13
    51
    은메달 따고 군대나 가라.. semitan 14/09/28 20:52 71 1
    50
    c언어 16진수로 변환하기 질문 있습니다 [7] semitan 14/09/24 19:16 34 0
    49
    프리스트 2각때 semitan 14/08/28 22:05 87 0
    48
    소환사 2각 간단 느낀점 [2] semitan 14/08/28 13:23 254 0
    47
    허허허 라모스 ㅠㅠ [6] semitan 14/08/28 12:03 254 0
    46
    약혐]혼란스러움을 틈탄 득 [1] semitan 14/08/28 11:22 238 0
    45
    차조때문에 새로 키울까 [3] semitan 14/08/28 09:31 238 0
    44
    항마99면 무기제외10셋은 상관 없는지? [5] semitan 14/08/23 14:07 138 0
    43
    던자타임 와서 오는 헬 러닝 [4] semitan 14/08/21 21:39 121 1
    42
    소환사 월영으로 양산 가능하다하네요 [9] semitan 14/08/21 15:01 267 0
    41
    골드 찍었어요!!! [2] semitan 14/08/18 22:56 130 1
    40
    온타임때 부캐릭 키우면서 느낀점 [2] semitan 14/08/15 21:52 193 0
    39
    왜 제련 확률은 안올라가는거죠? [1] semitan 14/08/15 20:29 79 0
    38
    (본삭금)양산용 캐릭 추천해주세요 [9] semitan 14/08/13 22:53 115 0
    37
    안드로이드 영상처리 질문있습니다. [4] semitan 14/08/13 18:18 19 1
    36
    만렙 헬 840장 결과 semitan 14/08/13 11:08 188 0
    35
    심심해서 옛날 잃어버린 아이디를 찾았습니다 [3] semitan 14/08/10 19:22 247 2
    [1] [2] [3]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈