我不明白这种类型的错误有什么问题。我有一个反向连接服务器(类型 Socks4/5 或 HTTP)。我使用服务器连接到其中一台远程 PC。为此,我打开了一个到此服务器之一的 TCP 连接(serverip:randport)。
// create an instance of the client proxy factory
ProxyClientFactory factory = new ProxyClientFactory();
ProxyHost = "string:serverIP";
ProxyPort = int:serverPort;
proxy = factory.CreateProxyClient(proxyType, ProxyHost, ProxyPort);
try
{ .. }
我为该工厂使用 Starksoft SOCKS 和 HTTP 代理组件 v1.0.130.0。
现在的问题是:要发送电子邮件,我使用 RFC821 来配置远程 PC 上的通信。如果您在 localhost 上由您的提供商打开了 25 端口,这也是同样的处理。
snd("HELO", true);
snd("MAIL FROM:" + sender, true);
snd("RCPT TO:" + recipient, true);
snd("DATA", true);
snd("From: " + sender);
snd("To: " + recipient);
snd("Subject: " + subject);
snd("");
snd(messagebody);
snd(".", true);
snd("QUIT", true);
我在这一行得到一个错误
private bool snd(string buffer, bool getresponse)
{
this.response = "";
NetworkStream stream = this.GetStream();
Byte[] sendBytes = Encoding.Default.GetBytes(buffer + crlf);
if (!stream.CanWrite) { return false; }
try
{
stream.Write(sendBytes, 0, sendBytes.Length);
}
+$exception {“无法将数据写入传输连接:已建立的连接被主机中的软件中止。”} System.Exception {System.IO.IOException}
和控制台写这个异常
我如何进行反向反向连接???
答案是使用中间服务器。然后脚本将如下所示:
- 有中间服务器打开一个端口是没有问题的,比如65080为服务器和80个客户端
- 有一个服务器(HTTP),它不能打开端口,但他知道中间服务器的地址,以及“服务器”端口 65080。它连接到一个中间服务器连接 1。
- 有一个普通的客户端,比如浏览器
- 客户端在端口 80 连接 2 上连接到中间服务器,并发出请求
- 此外,中间服务器直接向连接到端口 65 080 复合 1 的执行请求报告,该请求将不得不关闭 -
- 服务器接收到请求,服务器连接到另一个中间复合 3,询问中间件服务器请求,完成它,并将响应发送到暂存服务器
- 中间服务器将来自服务器(来自复合 3)的响应转发给客户端(对于复合 2)
- 客户端终止连接