使用 .NET Core 开发 BT Tracker 服务器

一、什么是 BT Tracker ?

在 BT 下载过程当中,我们如果拿到一个种子文件,在其内部会包含一组 BT Tracker 服务器信息。在开始进行下载的时候,BT 下载工具会根据种子内的唯一 HASH 码请求 Tracker 服务器,之后 Tracker 服务器会返回给正在 下载/做种 的 Peer 信息,下载工具获得了其他的 Peer 信息之后就会与其他的 Peer 建立通讯下载数据。

整个过程的时序图如下:

—

在这里 BT Tracker 充当的角色就是一个通讯员的角色,它的构造很简单,最简构造的情况下只需要一个 HTTP API 接口即可。其作用就是在 BT 下载工具请求 Peer 信息的时候,返回相应的信息即可。

Castle Windsor 的动态代理类如何获取实际类型

问题

在实际开发过程当中我们可能会针对某些类型使用动态代理技术(AOP),注入了一些拦截器进行处理,但是一旦某个类型被动态代理了,那么就会生成一个代理类。这个时候在该类内部使用 GetType() 方法获取到的 Type 类型并不是实际类型的 Type,而是代理类的 Type

.NET Core 使用 HttpClient SSL 请求出错的解决办法

问题

使用 HTTP Client 请求 HTTPS 的 API 时出现 The certificate cannot be verified up to a trusted certification authority 异常,并且证书已经传入。

下面就是问题代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Program
{
	public static void Main(string[] args)
	{
		var url = @"https://xxx.xxx.xxx.xxx:xxxx/xxx-web/services/xxxx?wsdl";

		var handler = new HttpClientHandler
		{
			ClientCertificateOptions = ClientCertificateOption.Manual,
			ClientCertificates =
			{
				new X509Certificate2(@"E:\cert\rootTrust.cer","11111111"),
				new X509Certificate2(@"E:\cert\middleTrust.cer","11111111"),
				new X509Certificate2(@"E:\cert\wskey.pfx","ws654321")
			}
		};
		
		var webRequest = new HttpClient(handler);
		var result = webRequest.GetStringAsync(url).GetAwaiter().GetResult();
		Console.WriteLine(result);
	}
}

CentOS Too Many Open Files 解决

问题: 在使用 WRK 对应用服务进行压测的时候,提示 “too many open files” 信息,导致无法启动测试。

原因: CentOS 7.x 默认的打开文件数目限制为 1024,如果在使用其他软件出现 “too many open files” 的错误。

解决: 只需要更改 /etc/security/limits.conf 文件里面的内容,增加如下信息即可。

C# 使用 HttpClient 调用 WebService 提示 NoSOAPAction

问题: 在自行构造 HttpClient 请求 SOAP 接口之后,返回 500 错误,并且提示 NoSOAPAction 信息。

原因: 造成这个问题的主要原因是因为缺少了 SOAPAction 标头,所以提示该信息。

解决: 解决问题很简单,只需要在请求的时候,为其 Header 增加一个 SOAPAction 标头,并且将其值设置为你需要调用的 SOAP 接口。

Built with Hugo
主题 StackJimmy 设计