2013-04-28 5 views
1

특정 포트 (주로 80)에 IP 주소 (라우터의 포트)를 연결하고 인증을 시도한 다음 추가 작업을 수행하는 프로그램을 작성하려고합니다. TCP 연결을 라우터에 연결하는 방법? (텔넷 클라이언트)

나는 내가이 짓도록 라우터/서버와 통신하는 방법을 모른 채 시작 :

while (tcpSocket.Available > 0) 
{ 
    int input = tcpSocket.GetStream().ReadByte(); 

를하지만 항상 tcpSocket.Available = 0 은 그럼 내가이를 보낼 필요가 있음을 발견 얻는다 그것과 관련된 특정 cmd를 나에게 말하십시오. http://msdn.microsoft.com/en-us/library/cc247846.aspx

var client = new TcpClient(ip, port); 
var data = Encoding.GetEncoding(1252).GetBytes(cmd); 
var stm = client.GetStream(); 
stm.Write(data, 0, data.Length); 

지금 내가 이해 해달라고이 방법 CMDS 37겠습니까이 http://www.ietf.org/rfc/rfc2941.txt 에 따라 cmd를 포맷하게 - 1?

내가 슈퍼 유저 나에 Serverfault 난 당신이 간단한 질문과 조사로 돌아갈 필요가 있다고 생각

+0

왜 당신은 바퀴를 재발 명하겠습니까? 이미 그것을위한 [도서관] (http://stackoverflow.com/questions/390188/c-sharp-telnet-library)이 있습니다. –

+0

라이브러리를 사용하셨습니까? 코드의 첫 번째 부분은 실제로 거기에서 그리고 또한 내가 어떻게 cmds를 포맷하는 방법과 어떤 라이브러리를 사용하지 않는 도서관 문제가있다 – Drakoumel

+0

아니, 절대 사용하지 마십시오. 브라이언이 대답 할 때, 나는 당신의 질문을 더 잘 이해합니다. –

답변

2

이를 가리켜 야 알고 P.S을 읽어 주셔서 그나마 감사드립니다.

첫 번째 : 연결하려는 서버에서 실제로 실행되는 프로토콜은 무엇입니까? 포트 80은 HTTP (포트 80은 일반적으로 HTTP 용으로 예약 됨)임을 나타냅니다. 텔넷은 일반적으로 포트 23에서 실행됩니다.
HTTP 인 경우 RFC 2616에 정의 된 프로토콜 (RFC 2617에 정의 된 인증 옵션 포함)을 따라야합니다.

더 간단하게는 : PuTTY (또는 기타 기본 텔넷 클라이언트)를 사용하여 서버에 연결하십시오. 로그인하려면 무엇을해야합니까? 텔넷 서버 인 경우 배너가 표시되고 로그인 프롬프트가 표시됩니다. 사용자 이름 다음에 return을 입력하면 암호 프롬프트가 표시됩니다. HTTP 서버 인 경우 전혀 표시되지 않지만 HTTP/1.0 (return) HEAD / (return)을 입력하면 HTTP 메시지 응답이 표시됩니다. PuTTY를 사용하여 무엇을해야하는지간에, 프로그램은 똑같은 일을 할 필요가 있습니다.

+0

글쎄, 사실은 라우터와 통신하려고하므로 기본 TCP 연결이 나를 인증하기 위해 작동 할 것이라고 생각했습니다. 그래서 내가하고 싶었던 것은 주로 브라우저에 들어가서 라우터 ip를 타이핑 할 때와 마찬가지로 사용자 이름과 패스를 묻는 메시지와 같은 것입니다. – Drakoumel

+0

일반 클라이언트가 웹 브라우저 인 경우 서버가 HTTP를 사용 중입니다. 일부 라우터는 RFC 2617에 정의 된 HTTP 기본 인증을 사용하므로 클라이언트가 수행해야하는 작업입니다. 일부 라우터는 사용자 지정 양식 기반 인증을 사용하므로이를 사용해야합니다. 어떤 경우든지 HTTP이기 때문에 소켓을 전혀 사용하지 않아도 기본 인증을 포함한 모든 간단한 작업을 수행하는 좋은 라이브러리 (.NET Framework의 System.Net 네임 스페이스 포함)가 있습니다. –

+0

좋아, thnx 많이! – Drakoumel

관련 문제