2012-09-11 4 views
0

원격 서버의 실시간 데이터를 클라이언트로 연결하고 있습니다. 서버에 다음을 보내고 연결을 유지하고 싶습니다. 이것은 '푸시'프로토콜입니다.Telnet/Hercules/Raw 소켓을 사용하는 HTTP를 통한 HTTP/

http://server.domain.com:80/protocol/dosomething.txt?POSTDATA=thePostData 

브라우저에서이를 호출 할 수 있습니다. 그러나 Windows 명령 프롬프트에서 텔넷을 직접 사용하려고하면 프롬프트가 종료됩니다.

GET protocol/dosomething.txt?POSTDATA=thePostData 

Putty.exe를 사용하고 Telnet을 프로토콜로 선택하는 경우도 마찬가지입니다. 서버가 GET을 해석 할 것이라고 생각하지 않기 때문에 Hercules로이 작업을 수행하는 방법을 볼 수 없습니다.

이 작업을 수행 할 수있는 방법이 있습니까?

감사합니다.

답변

1

텔넷을 사용하려면 HTTP protocol (RFC2616)과 일치해야합니다.

shell$ telnet www.google.com 80 
Trying 173.194.43.50... 
Connected to www.google.com (173.194.43.50). 
Escape character is '^]'. 
GET/HTTP/1.1 
Host: www.google.com:80 
Connection: close 

HTTP/1.1 200 OK 
Date: Tue, 11 Sep 2012 15:09:51 GMT 
... 

"연결"줄 다음에 "빈 줄"을 포함하여 다음 줄을 입력해야합니다.

GET/HTTP/1.1 
Host: www.google.com:80 
Connection: close 
+1

아 .... 기본적으로 로컬 에코는 해제되어 있습니다. 인자없이'telnet'을 실행하는 것으로 시작하십시오. 그런 다음 'set localecho'를 입력 한 다음'www.google.com 80 열기 '를 입력하십시오. 텔넷을 이해하는 모든 터미널 에뮬레이터를 사용할 수 있어야합니다. –

+0

TCP 소켓을 포트 80에 연결하고 동일한 텍스트를 보낼 수 있어야합니다. CR-NL 쌍 (' "\ r \ n"')으로 줄을 끝내고 헤더 다음에 빈 줄을 넣으십시오. 그런 다음 응답을 읽고 완료되면 소켓을 닫으십시오. –

+0

다시 도움을 주셔서 감사합니다. 데이터를 보낼 때 응답이 없습니다. 내 구문이 잘못되었다고 생각합니다. 나는 Hercules (TCP client)로 이것을하고있다 : 80의 server.domain.com에 연결한다. 나는 'connected'응답을 얻는다. POSTDATA = thePostData \ r \ nHTTP/1.0 \ r \ n \ r \ n 여러 순열을 시도했지만 아무 소용이 없습니다. 나는 돈을 내지 않습니다. GET/HTTP/1.0 \ r \ n \ r \ n'을 보내면 Google로부터 응답을받지 못합니다. –