Microsoft MVP성태의 닷넷 이야기
HTTP 프로토콜로 통신하는법? [링크 복사], [링크+제목 복사],
조회: 12895
글쓴 사람
박용운 (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 포트로 포워딩을 시켜주는 역할을 하도록.

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

... 91  92  93  [94]  95  96  97 
NoWriterDateCnt.TitleFile(s)
111정성태3/19/20059690    답변글 [답변]: 닷넷 프레임워크 배포
107안연준3/17/20058935[-_-]스마트 클라이언트에 관련 된 질문[-_-]
110정성태3/19/20059739    답변글 [답변]: [-_-]스마트 클라이언트에 관련 된 질문[-_-]
116안연준3/21/20059338        답변글 [답변]: 친절한 답변 고맙습니다.
98김용국3/18/200511032정성태님... 연결이 준비됬습니다
99정성태3/2/200511911    답변글 [답변]: 정성태님... 연결이 준비됬습니다
100김용국3/18/20058760        답변글 [답변]: 죄송합니다! 급히올리느라 file path의 변경을 하지않고 그냥올렸네요....!
101정성태3/2/20059013            답변글 [답변]: [답변]: 죄송합니다! 급히올리느라 file path의 변경을 하지않고 그냥올렸네요....!
102김용국3/18/20059103                답변글 [답변]: 거듭죄송하네요..... 후~~~주소를 변경하고 빌드를 다시 했습니다....
103정성태3/2/20058969                    답변글 [답변]: [답변]: 거듭죄송하네요..... 후~~~주소를 변경하고 빌드를 다시 했습니다....
104김용국3/2/20059223                        답변글 [답변]: 네... 빨리 검토해 봐 주셔서 감사합니다~~
105정성태3/2/20058443                            답변글 [답변]: [답변]: 네... 빨리 검토해 봐 주셔서 감사합니다~~
106김용국3/2/20058927                                답변글 [답변]: 답변감사합니다!
91김용국2/28/200510702IE에 WindowsFormControl을 올려 실행하면 이런에러가 나네요???파일 다운로드1
92정성태2/28/200512019    답변글 [답변]: IE에 WindowsFormControl을 올려 실행하면 이런에러가 나네요???
93김용국2/28/200510917        답변글 [답변]: 답변감사합니다... 재질문을 드립니다
94정성태2/28/200511497            답변글 [답변]: [답변]: 답변감사합니다... 재질문을 드립니다
95김용국2/28/200511604                답변글 [답변]: IE주소창에서 해당주소로 실행을 해보니....디버깅 PopUp화면이...^
96정성태2/28/200510659                    답변글 [답변]: [답변]: IE주소창에서 해당주소로 실행을 해보니....디버깅 PopUp화면이...^
97김용국3/1/200511187                        답변글 [답변]: 준비되는데로 말씀드리겠습니다 ^^
88안지환2/22/200512744^^ 사이트 잘 들러보았습니다.
89정성태2/22/200512727    답변글 [답변]: ^^ 사이트 잘 들러보았습니다.
85한기열2/22/200511327정성태님 홈같은 부드러운 페이지 넘김?은 어떻게 구현하나요?
86정성태2/22/200512024    답변글 [답변]: 정성태님 홈같은 부드러운 페이지 넘김?은 어떻게 구현하나요? [2]
84김용국2/21/200512095Smart Client에 관한 문의 드립니다.
87정성태2/22/200512155    답변글 [답변]: Smart Client에 관한 문의 드립니다.
... 91  92  93  [94]  95  96  97