このタイプのエラーの問題が何であるかわかりません。Back-Connect サーバー (タイプ Socks4/5 または HTTP) があります。サーバーを使用して、リモート PC の 1 つに接続します。そのために、このサーバーの 1 つ (serverip:randport) への TCP 接続を開きます。
// 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 Proxy Component 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}
そしてコンソールは例外でこれを書きます
逆バックコネクト接続を行うにはどうすればよいですか???
答えは、中間サーバーを使用することです。次に、スクリプトは次のようになります。
- ポートを開くのに問題のない中間サーバーがあります。たとえば、サーバーの場合は 65 080、クライアントの場合は 80 です。
- ポートを開くことができないサーバー (HTTP) がありますが、彼は中間サーバーのアドレスと「サーバー」ポート 65080 を知っています。中間サーバー接続 1 に接続します。
- ブラウザなどの通常のクライアントがあります
- クライアントは、ポート 80 接続 2 で中間サーバーに接続し、要求を行います
- さらに、中間サーバーは、ポート 65 080 化合物 1 に接続されているエグゼクティブ リクエストに直接報告します。
- サーバーはリクエストを受信し、サーバーは別の中間コンパウンド 3 に接続し、ミドルウェア サーバーにリクエストを送信し、リクエストを実行して、ステージング サーバーにレスポンスを送信します。
- 中間サーバーは、サーバーからの応答 (複合 3 から) をクライアント (複合 2 の場合) に転送します。
- クライアントは接続を終了します