1

我正在尝试构建一个程序,将 IP 地址(最好是路由器的 IP 地址)连接到特定端口(主要是 80),并尝试进行身份验证,然后继续执行进一步的操作。

我开始时不知道如何与路由器/服务器通信,所以我这样做了:

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);

现在我不明白如何根据这个http://www.ietf.org/rfc/rfc2941.txt格式化 cmds cmd 会是 37 - 1?

感谢您阅读 PS 不知道我是否应该将此指向 SuperUser 或 ServerFault

4

1 回答 1

2

我认为你需要回到更简单的问题和调查。

第一:您要连接的服务器上实际运行的是什么协议?端口 80 表明它是 HTTP(端口 80 通常为 HTTP 保留)。Telnet 通常在端口 23 上运行。
如果是 HTTP,您需要遵循 RFC 2616 中定义的协议(使用 RFC 2617 中定义的身份验证选项)。

甚至更简单:使用 PuTTY(或其他首选 telnet 客户端)连接到服务器。您需要做什么才能登录?如果它是一个 telnet 服务器,那么它可能会显示一个横幅,然后是一个登录提示。您将键入用户名,然后返回,然后它将显示密码提示。如果它是一个 HTTP 服务器,那么它可能什么都不显示,但是输入HTTP/1.0(return) HEAD /(return),你应该会看到一个 HTTP 消息响应。无论您需要使用 PuTTY 做什么,您的程序都需要做完全相同的事情。

于 2013-04-28T18:33:57.447 回答