HTTP GET 명령을 통해 얻은 html 문서, 원문에 없던 ^M 문자가 붙음
글쓴이: cabjaewon / 작성시간: 금, 2006/06/30 - 6:07오후
웹에서 html 문서를 획득해 오는 프로그램을 만드는 중입니다.
unix 프롬프트에서 다음의 명령을 실행한 경우,
telnet www.hani.co.kr 80
GET /
얻게 되는 결과는 다음과 같습니다.
같은 결과를 이번에는 C 프로그램 내부에서 소켓 프로그래밍을 수행해 얻으려고 합니다.
"GET /\n" 이란 메세지를 www.hani.co.kr 의 웹 서버 (포트 80) 로 보내서 같은 작업을 수행했고, 아래의 html 파일을 얻었습니다.
질문1> 원문에 없던 ^M 이 C 프로그램을 이용해 얻은 결과엔 보이네요.. 왜 이 문자가 붙은 걸까요? 보아하니 new line 문자 자리에 들어온 것 같기도 하고... 원문과 같은 결과를 얻고 싶은데.. ^M 문자 없애는 방법 없을 까요?
질문2> 아울러, C 프로그램을 이용해 html 문서를 수집할 경우, html 문서의 일부만 수집되는 경우가 있습니다. 끝부분이 잘려나가든가 하는 식으루요.. 즉, 원문엔
File attachments:
첨부 | 파일 크기 |
---|---|
![]() | 55.59 KB |
Forums:
1. dos 개행문자 \r\n 이
1. dos 개행문자 \r\n 이 옛날 vi 에서 ^M 으로 나옵니다.
별로 없앨 필요가 없습니다. 영 흉하면 정규식 치환하면 되겠지요.
2. C 에서 사용하는 함수를 좋은걸로 바꿔보세요.
http 프로토콜은 톡톡 끊어지는 서버가 많습니다.
emerge money

https://xenosi.de/
에궁, 한겨레당...
20세기(?)까지 한겨레 신문사랑 많이 일했는뎅. 갑자기 저 화면을 보니 그때 한겨레 개발자들이랑 스타했던 기억에 안습 ㅠ.ㅜ 다들 잘 있으실라나? 흑흑흑,...
답변1> 위의 송효진님 말씀대로 [CR][LF]가 같이 온겁니다. conv 명령을 쓰던지 해서 없애심 되구여.
(글구 왠만하면 GET / HTTP/1.1[CR][LF] 이렇게 테스트하시져..)
답변2> 제가 보기엔 받으시는 분이 잘못 받으시는 것 같습니다. 제가 예전에 저 사이트 그런 작업 다 해 봤습니다...(ㅜ.ㅠ)
-----[꼬릿말 절취선 시작]-----
삽질전에 먼저 구글신께 기도하자.
-----[꼬릿말 절취선 끝]-----
-----[꼬릿말 절취선 시작]-----
삽질전에 먼저 구글신께 기도하자.
-----[꼬릿말 절취선 끝]-----
어떻게 잘못 받고 있는건지 모르겠습니다...
답변 감사드립니다..^^
그런데.. 받는 측에서 잘못 받고 있는 것 같다는 얘기가 어떤 말씀이신지 조금 더 구체적으로 듣고 싶습니다.. (위에 글에 내용 추가했으니까 참고해 주세요..)
그리고 제가 아직 초짜라서 그런데요.. 말씀하신 conv 명령이란 게요.. unix c 라이브러리에 없는 거 같던데.. 제가 직접 구현해야 하는 함수인거 맞지요? ('man conv' 를 프롬프트에 쳐봤는데.. 'No manual entry for conv' 라는 문구가 떠서요..)
한겨레 사이트를 택한 이유는.. 제가 평소에 자주 보는 신문이라 택했습니다...^^;;
테스트해보니
www.hani.co.kr 에서 보내오는 index.html 이 [CR][LF] 를 newline 문자로 사용해서 작성되어 있는듯 싶네요.
(다른 사이트의 경우, 보내오는 index.html 에 [CR] 이 없기도 합니다; 서버 사이드 측 파일의 문제인듯)
그리고, telnet 으로 얻은 결과에서 [CR] 캐릭터가 없는 이유는 telnet 프로그램이 [CR][LF] 를 [LF] 로 변환하는 작업을 수행합니다;
댓글 달기