결론만 적자면 내가 평소 http 프로토콜을 직접 짜야 할 경우 보통 1.0 기반으로 만드는 편인데 이번에도 역시 1.0 기반으로 리퀘스트를 했고 벨킨 공유기는 이걸 에러로 취급해준것.
SOAP 이 HTTP 1.1 위에서 돌아야만 했던가? 흠 지금껏 이런 문제는 본적이 없는데
나중에 이것좀 찾아보자.
어 참고로 지금 UPnP 로 포트매핑 하는거 대강 순서나 적어둘까
- 디스커버리
- 찾았으면 디스크립션 읽어오고
- 그중에서 컨트롤 URL 을 파싱해서
- 먼저 DeletePortMapping 으로 이전 포트포워딩 정보가 있으면 지워주고
- AddPortMapping 으로 포트매핑 추가
정석대로라면 먼저 뚫어보고 이미 뚫려있다고 응답해오면 상황판단을 해서 뚫은것 지우고 다시 뚫거나 등등의 처리를 해야 하겠지만 흠. 일단 걍 막무가내로 뚫어버렸다.
아..
문제가 생긴 공유기는 벨킨 F5D8236-4 v2 였다.
지금은 꺼놔서 펌웨어 버전은 못적겠군.
댓글 2개:
안녕하세요 현재 c로 upnp포트포워딩을 연구중인데요 궁금한점이 있어서 글을 남깁니다
현재 보고 있는 책이 intel -Upnp design 입니다(e-book)
챕터 19에 보면 컨트롤 포인트를 만드는 과정이 간략히 나오는데요 discovery 에서 UpnpSearchAsync 를 사용하더라구요
제가 알기론 udp 를 이용해야 하는걸로 아는데 운영자님 파이썬글을 보아도 udp 로 통신하시더라구요 udp 와 UpnpSearchAsync 로 값을 구하는것에 차이가 있을까요 ?
@n2v2rda2 - 2010/11/29 13:44
아.. 제가 블로그를 거의 안쓰다 보니 확인이 늦었네요.
저는 인텔라이브러리를 쓰지 않고 직접 구현하는 식으로 접근했습니다.
포트포워딩까지만 필요했기에 문서는 대강 구경만 하고 포트포워딩기능을 가진 P2P 클라이언트와 공유기간의 패킷을 wireshark 로 훔쳐서 그걸 기반으로 작업을 했구요.
따라서 UpnpSearchAsync 에 대해서는 제가 알기 어렵네요.
제가 올렸던 글중에 디스커버리부터 포트포워딩까지 테스트를 해본 코드가 있는데 참고해보세요
http://yoonkn.textcube.com/54
common lisp 코드이긴 헌데.. 흐름파악에는 문제가 없을듯하네요.
저도 저 코드로 기능테스트를 한후에 C 로 재구현을 했었습니다.
댓글 쓰기