gpt4 book ai didi

c# - 无法使用 monotorrent ("no connection could be made because the target machine actively refused it"下载种子文件)

转载 作者:行者123 更新时间:2023-11-30 13:01:48 26 4
gpt4 key购买 nike

我正在尝试使用 monotorrent 下载种子文件.我刚刚从其 github repository 下载了一个示例程序并进行了必要的更改。

正在相关位置创建所有大小为 0 字节的文件,但没有任何进展。当通过堆栈跟踪运行时,我发现它抛出一个异常,提示 no connection could be made because the target machine actively refused it。这是一个已处理的异常。我只能在堆栈跟踪中看到它。

same torrent可以在我的 windows 操作系统上通过 uTorrent 程序下载。

I have set upped the Git repository for my project here

这是我所有的代码。这是不完整的代码..?我还需要添加什么……?

using System;
using System.Collections.Generic;
using MonoTorrent.Client;
using MonoTorrent.Client.Encryption;
using System.IO;
using MonoTorrent.Common;
using System.Net;
using System.Web;
using MonoTorrent.Tracker;
using MonoTorrent.Tracker.Listeners;

namespace Samples
{
public class ClientSample
{
BanList banlist;
ClientEngine engine;
List<TorrentManager> managers = new List<TorrentManager>();

public ClientSample()
{
//StartTracker();
SetupEngine();
//SetupBanlist();
LoadTorrent();
StartTorrents();
}

void SetupEngine()
{
EngineSettings settings = new EngineSettings();
settings.AllowedEncryption = ChooseEncryption();

// If both encrypted and unencrypted connections are supported, an encrypted connection will be attempted
// first if this is true. Otherwise an unencrypted connection will be attempted first.
settings.PreferEncryption = true;

// Torrents will be downloaded here by default when they are registered with the engine
//settings.SavePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Torrents");
settings.SavePath = HttpContext.Current.Request.MapPath("~/Torrents/");

// The maximum upload speed is 200 kilobytes per second, or 204,800 bytes per second
settings.GlobalMaxUploadSpeed = 200 * 1024;

engine = new ClientEngine(settings);

// Tell the engine to listen at port 6969 for incoming connections
engine.ChangeListenEndpoint(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6969));
}

EncryptionTypes ChooseEncryption()
{
EncryptionTypes encryption;
// This completely disables connections - encrypted connections are not allowed
// and unencrypted connections are not allowed
encryption = EncryptionTypes.None;

// Only unencrypted connections are allowed
encryption = EncryptionTypes.PlainText;

// Allow only encrypted connections
encryption = EncryptionTypes.RC4Full | EncryptionTypes.RC4Header;

// Allow unencrypted and encrypted connections
encryption = EncryptionTypes.All;
encryption = EncryptionTypes.PlainText | EncryptionTypes.RC4Full | EncryptionTypes.RC4Header;

return encryption;
}

void SetupBanlist()
{
banlist = new BanList();

if (!File.Exists("banlist"))
return;

// The banlist parser can parse a standard block list from peerguardian or similar services
BanListParser parser = new BanListParser();
IEnumerable<AddressRange> ranges = parser.Parse(File.OpenRead("banlist"));
banlist.AddRange(ranges);

// Add a few IPAddress by hand
banlist.Add(IPAddress.Parse("12.21.12.21"));
banlist.Add(IPAddress.Parse("11.22.33.44"));
banlist.Add(IPAddress.Parse("44.55.66.77"));

engine.ConnectionManager.BanPeer += delegate(object o, AttemptConnectionEventArgs e)
{
IPAddress address;

// The engine can raise this event simultaenously on multiple threads
if (IPAddress.TryParse(e.Peer.ConnectionUri.Host, out address))
{
lock (banlist)
{
// If the value of e.BanPeer is true when the event completes,
// the connection will be closed. Otherwise it will be allowed
e.BanPeer = banlist.IsBanned(address);
}
}
};
}

void LoadTorrent()
{
// Load a .torrent file into memory
//Torrent torrent = Torrent.Load("myfile.torrent");
Torrent torrent = Torrent.Load(HttpContext.Current.Request.MapPath("~/myfile.torrent"));

// Set all the files to not download
foreach (TorrentFile file in torrent.Files)
file.Priority = Priority.Normal;

// Set the first file as high priority and the second one as normal
//torrent.Files[0].Priority = Priority.Highest;
//torrent.Files[1].Priority = Priority.Normal;

//TorrentManager manager = new TorrentManager(torrent, "DownloadFolder", new TorrentSettings());
TorrentManager manager = new TorrentManager(torrent, HttpContext.Current.Request.MapPath("~/Torrents/"), new TorrentSettings());

managers.Add(manager);
engine.Register(manager);

// Disable rarest first and randomised picking - only allow priority based picking (i.e. selective downloading)
PiecePicker picker = new StandardPicker();
picker = new PriorityPicker(picker);
manager.ChangePicker(picker);
}

void StartTorrents()
{
engine.StartAll();
}
}
}

最佳答案

这可能是因为有问题的跟踪器阻止了未知客户端,例如您正在开发的客户端。尝试使用 Monotorrents 自己的工具创建一个 torrent 并将其上传到公共(public)跟踪器,例如 kat.ph

关于c# - 无法使用 monotorrent ("no connection could be made because the target machine actively refused it"下载种子文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com