到路由器的tcp连接如何通信? (Telnet客户端)
我试图建立一个程序,将连接到一个IP地址(最好是路由器)到一个特定的端口(主要是80),并尝试进行身份验证,然后继续进一步的行动。到路由器的tcp连接如何通信? (Telnet客户端)
我一开始不知道如何与路由器/服务器,所以我这样做沟通:
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在此基础上http://www.ietf.org/rfc/rfc2941.txt 将是37 CMD - 1?
感谢您阅读 P.S不知道如果我要指出这对超级用户或ServerFault
我想你需要回到简单的问题和调查。
第一:您连接的服务器上实际运行的协议是什么?端口80表示它是HTTP(端口80通常保留用于HTTP)。 Telnet通常在端口23上运行。
如果是HTTP,则需要遵循RFC 2616中定义的协议(使用RFC 2617中定义的身份验证选项)。
更简单:使用PuTTY(或其他首选的telnet客户端)连接到服务器。你需要做什么才能登录?如果它是一个telnet服务器,那么它可能会显示一条横幅,然后是登录提示符。您将输入用户名后跟回车,然后它会显示密码提示。如果它是一个HTTP服务器,那么它可能会告诉你什么都没有,但输入HTTP/1.0
(返回)HEAD /
(返回),你应该看到一个HTTP消息响应。无论您需要使用PuTTY,您的程序都需要执行完全相同的操作。
以及我实际上试图与路由器通信,所以我认为基本的TCP连接将工作以验证我。所以我想要做的事情与当你进入浏览器并输入路由器ip并且提示你输入用户名和密码时是一样的。 – Drakoumel 2013-04-28 18:38:28
如果普通客户端是网页浏览器,则服务器使用HTTP。一些路由器将使用RFC 2617中定义的HTTP基本认证,这就是您的客户需要做的事情。某些路由器将使用基于自定义表单的身份验证,因此您需要使用该身份验证。在任何情况下,因为它是HTTP,所以有很好的库(包括.NET框架中的System.Net命名空间)可以完成所有简单的任务,包括基本身份验证,而无需使用套接字。 – 2013-04-28 18:42:35
好的,thnx很多! – Drakoumel 2013-04-28 18:43:27
你为什么要重新发明轮子?已经有一个[库](http://stackoverflow.com/questions/390188/c-sharp-telnet-library)。 – 2013-04-28 18:26:01
你使用过库吗?第一块代码实际上是从那里,我也有一个问题,如何格式化cmds和哪些使用哪个库任何库不会涵盖 – Drakoumel 2013-04-28 18:28:02
不,从未使用。当Brian回答时,我更好地理解你的问题。 – 2013-04-28 18:44:46