Microsoft MVP성태의 닷넷 이야기
HTTP 프로토콜로 통신하는법? [링크 복사], [링크+제목 복사],
조회: 12918
글쓴 사람
박용운 (sialnuri at yahoo.co.kr)
홈페이지
첨부 파일
 

--;
갈수록 질문만 늘어가는군요. 에휴~~

제경우엔 주로 소켓(TCP)를 많이 사용하는데 이것으로 하면 방화벽이 있는곳에서 패킷이 제대로 전달되지 않는 경우도 있더군요.
그래서, 이부분에 대해서 알아보는데 대충 SOAP, HTTP Turning, RPC... 대부분 처음 듣는것으로 한다고 하더군요.
근데 어떤사람은 위 기술들은 실제 주고받는 통신에서 사용하는것이 아니라 서버쪽에서 패킷을 검사할때 사용한다고 하더군요.

즉, 아직까지 방향도 못잡고 있죠. 켁~~

이것도 IEHelpr에 붙일것인데
winsock수준에서 http로 통신할수있는 방법은 없을까요?








[최초 등록일: ]
[최종 수정일: 7/22/2003]


비밀번호

댓글 작성자
 



2003-07-21 05시15분
결국, 방화벽은 80 포트 이외에는 거의 모든 것을 막았다고 보는 것이 좋습니다.
따라서, WinSock 으로 80 포트로 접속하면 되겠지요.

하지만, 요즘에는 WinXP Professional 만 해도 IIS 가 올라가 있어서 80 으로 안되는 상황도 많을 것입니다. SOAP 역시 80 포트로 연결하는 것이죠. 나머지는 잊어버리십시오. 특별한 설정을 하지 않는 한 범용적인 환경에서는 사용할 수 없는 것들입니다.
정성태
2003-07-21 05시15분
안녕하세요? 답변은 잘보았습니다. 저희는 이 문제때문에 예전부터 80으로 통신을 했거든요. 그런데, 80으로 소켓통신을 해도 막히는 부분이 있더군요. 그래서, 생각한것이 http 프로토콜로 이용하자는것인데 방법이 막연할뿐 어떻게 해야될지 모르겠군요. SOAP관련 소스는 구했는데 이것은 클라이언트뿐아니라 서버쪽도 뭔가 세팅을 해야될것 같아서 안될것 같고, 그래서, 현재 서버쪽은 그냥두고 클라이언트입장에서 서버로 http 프로토콜로 메세지전송하는법을 할려고합니다. (서버는 현재 자바로 구현되었는데 GET 메세지는 받더군요. 클라이언트에서만 보낼수있으면 될듯) 이에 관련된 정보를 찾아보았는데 MFC에서는 CInternetSession로 사용해서 GET 정보전송하듯이 하는 소스가 있더군요. 그런데, 문제는 IEHelpr(BHO를 사용한 기본소스)에 붙여보니깐 에러가 뜨더군요. afx.h, afxwin.h, afxinet.h 이렇게 3개의 헤드파일이 필요한것 같은데 이것만 추가하면 WINDOWS.H already included. MFC apps must not #include 에러가 납니다. 이 상황에서 어떻게 해야할까요?
박용운
2003-07-21 05시15분
제가 방화벽에 대해서는 잘은 모르지만. 예전에 아시는 분이 방화벽 설정하는 것을 어깨너머로 보아온 바로는 프로토콜형식까지도 제어하는 듯 했습니다.

즉, 요청된 패킷의 형식이 HTTP Header / Body 구성이 아니면 Drop 시켜버리는 거죠.

아마도 80 으로 해도 막혔다면, 그런 연유인듯 합니다.

어쨌든 말씀하시는 것으로 봐서는 HTTP 프로토콜 구성을 모르실리 없을 것 같은 수준이신데요. HTTP 는 단지

GET /sysnet/webservice/CreateRandom.aspx HTTP/1.1
Connection: Keep-Alive
Content-Length: 338
Content-Type: application/x-www-form-urlencoded
Cookie: ASP.NET_SessionId=peesq255cema45552eb44uvy; VisitSite=true
Host: localhost
Referer: http://localhost/sysnet/Default.aspx
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 1.0.3705)

위와 같은 형식의 헤더와 뒤이어 "\r\n\r\n" 이후에 나오는 본문이 있습니다.

즉 Winsock 으로 80 포트로 connect() 한후에,
send( "GET /sysnet/webservice/CreateRandom.aspx HTTP/1.1\r\n....." );
와 같은 식으로 하시면 되는 것입니다.
그러면은 실제로 서버로부터 Response 가 오게 되어 있지요.

그리고, IEHelper 는 ATL 예제일 텐데... 거기다가 MFC 라이브러리를 쓰시면 안됩니다. VC++.NET 으로 오면서 MFC 와 ATL 이 통합되었다고 하는데, C# 만을 전문으로 하다 보니 테스트해볼 기회는 없었습니다.
정성태
2003-07-21 05시15분
안녕하세요?
답변 감사합니다.

단편적인 코딩만 했었지 기술적으로는 거의 전무합니다.
한마디로 초보죠. ^^*

어째든, 80에서 막히는 문제때문에 기술적으로 찾아보았는데
SOAP는 서버환경(IIS, APACHE)에 따라서 클라이언트에 필요한 라이브러리가 다르고 물론, 서버에 접속하기위한 코딩도 다르더군요.
채팅이나 메신저같이 서버가 고정된곳이 아니라면 이 기술은 적합하지 않더군요.

또한, XML-RPC는 HTTP로 POST로 메세지를 주고받아서 80으로도 통신이 가능하다고 하더군요.
문제는 저희와 맞지않는것이 하나의 서버에서 웹도 사용하고 80으로 어플리케이션도 돌려야하는데 XML-RPC는 이것이 안되더군요.
단지, 방화벽만 피해갈뿐 클라이언트에서 전송한 메세지를 처리할 서버쪽 프로그래밍에서 포트를 정의해야되기때문에
이 기술도 저희와는 맞지않더군요.

마지막으로, 운영자님이 말씀하신 소켓으로 HTTP전송을 하는것인데
과연 이것만으로 방화벽을 통과할지는 아직 테스트를 거치지 않았기 때문에 모르겠습니다.
하지만, 현재 입장에서 이 방법이 최적의 방법이라 생각되는군요. 물론, 테스트를 거쳐서 되면 말이죠.
아니면, XML-RPC로 가야되구요.

별로 궁금은 안하시겠지만 테스트결과가 나오면 알려드릴께요.

그럼..수고하세요.
박용운
2003-07-21 05시15분
웹서버가 설치된 곳에서는 80 포트로 대기하는 또 다른 서비스 자체를 띄울 수가 없죠.

이렇게는 가능할 지도 모르겠습니다.
차라리, 80 포트로 대기해야 하는 서비스가 ... 자신이 설치되는 환경에 IIS 서버가 있는 경우에는 IIS 내부에 "가상 Application"을 설치하고, 몇 가지 정의된 ASP 등의 파일을 자동 설치하는 것입니다. 그리곤, 자신은 80 포트 이외의 것으로 (예를 들어 9000) 로 대기를 하는 것이죠.

ASP는 요청을 받은 그 내용을 그대로 9000 포트로 포워딩을 시켜주는 역할을 하도록.

아무튼. 정확히 어떠한 상황인지 몰라서. ^^;
얘기만 해봅니다.
정성태

... 76  77  78  79  80  [81]  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
4659/23/200611771vb.net에서 c에서 보내는 Post메쎄지를 잡아서 처리할수 없을가요? [1]
464정윤수9/22/200613602asp.net 에서 DataSet 을 RecordSet 으로 변환 [2]
463sagi...9/22/200612591IE 제어 (BHO) 중 데이터 형에 질문 드립니다. [1]
462[손님]9/21/200613893ASP.NET 에서 COM+ 호출시 프로그램 구조를 어떻게 만들어야 할지...조언 부탁합니다. [2]파일 다운로드1
461정태운9/19/200613852Vista RC1에서 XPS Document를 Image로 변환하는 코드의 특정 API 가 동작하지 않습니다. [2]
459이방은9/14/200612863축하합니다.. [1]
458이승용9/7/200614200스마트 클라이언트 관련 질문입니다. [4]
456guest9/7/200613805데이타셋 암호화 방법...이 있을까요? [2]
451임은주8/31/200613582mms 스트림을 로컬 파일로 저장해주는 프로그램 에 대해서 여쭤볼께요 [1]
448guest8/28/200614024서버인증서및클라이언트인증서 발급
449정성태8/28/200613653    답변글 [답변]: 서버인증서및클라이언트인증서 발급
450ligh...8/29/200613902        답변글 [답변]: [답변]: 서버인증서및클라이언트인증서 발급 [3]
468light9/28/200613993            답변글 [답변]: [답변]: [답변]: 서버인증서및클라이언트인증서 발급
472정성태10/5/200614405    답변글 [답변]: 서버 인증서 및 클라이언트 인증서 발급
475ligh...10/11/200613290        답변글 [답변]: [답변]: 서버인증서및클라이언트인증서 발급
446윤경재8/20/200618638COM+ 프로젝트 디버깅 방법. [2]파일 다운로드1
442이남호8/7/200613886스마트클라이언트에 Farpoint Winform을 이용했는데 배포가 안되요.
443이남호8/7/200615829    답변글 [답변]: 스마트클라이언트에 Farpoint Winform을 이용했는데 배포가 안되요.
441강혜영8/5/200614751SHDocVw를 이용한 익스플로어 제어
444정성태8/7/200612917    답변글 [답변]: SHDocVw를 이용한 익스플로어 제어
445강혜영8/8/200613598        답변글 [답변]: [질문]: SHDocVw를 이용한 익스플로어 제어 [1]
437혀기7/25/200612294DirectoryEntry의 Childrend에 Add할때 엑세스가 거부됩니다~ㅜㅜ [2]파일 다운로드1
436조성택7/24/200612107IE를 가로채서 그리고 싶을때.. [1]
439태기7/25/200612770    답변글 [답변]: IE를 가로채서 그리고 싶을때..(재질문) [1]파일 다운로드1
435이영균7/21/200613528작그마한 스마트클라이언트 프로젝트를 진행하고 있습니다. [1]파일 다운로드1
431혁이7/19/200612132UpdatePanel(Atlas)위의 SmartClient가 이벤트후 사라집니다. ㅜㅜ파일 다운로드1
... 76  77  78  79  80  [81]  82  83  84  85  86  87  88  89  90  ...