Um servidor simulado TCP/UDP simples para uso em projetos de teste que testam projetos baseados em núcleo .Net.
Quando eu estava trabalhando no projeto Cimon.Net, percebi que não posso simular soquetes com bibliotecas existentes, então mudei meu projeto para criar soquetes falsos. Mas o problema ainda existia, então comecei a escrever esse projeto e finalmente usei no Cimon.Net.
Você pode instalar Rony.Net
com o Console do Gerenciador de Pacotes NuGet:
Install-Package Rony.Net -Version 0.1.2
Ou por meio da interface de linha de comando do .NET Core:
dotnet add package Rony.Net --version 0.1.2
Com Rony.Net você pode criar 3 tipos de Servidor:
Você pode criar e executar servidores simulados conforme abaixo. Porta, IP e outras configurações são configuráveis através de construtores:
using var tcpServer = new MockServer ( new TcpServer ( 3000 ) ) ;
tcpSever . Start ( ) ;
using var tcpSslServer = new MockServer ( new TcpServerSsl ( 4000 , certificateName , SslProtocols . None ) ) ;
tcpSslServer . Start ( ) ;
Você deve endereçar um certificate
válido e instalado com permissão de leitura em sua chave privada e também pode definir SslProtocol
com base em seus requisitos.
using var udpServer = new MockServer ( new UdpServer ( 5000 ) ) ;
Por favor, preste atenção que o servidor UDP não precisa ser iniciado devido à sua natureza.
Então você pode usar um cliente normal para conectar e enviar solicitações a eles, como abaixo:
using var client = new TcpClient ( ) ;
await client . ConnectAsync ( IPAddress . Parse ( "127.0.0.1" ) , 3000 ) ;
var client = new UdpClient ( ) ;
client . Connect ( IPAddress . Parse ( "127.0.0.1" ) , 5000 ) ;
Você pode usar mockServer.Mock
para gerenciar dados de envio/recebimento, então o servidor retornará os dados configurados, com base nos dados enviados:
mockServer . Mock . Send ( "Test String" ) . Receive ( "Test Response" ) ;
mockServer . Mock . Send ( new byte [ ] { 1 , 2 , 3 } ) . Receive ( new byte [ ] { 3 , 2 , 1 } ) ;
mockServer . Mock . Send ( "abcd" ) . Receive ( x => x . ToUpper ( ) ) ;
Uma opção importante no uso de mockServer.Mock
é adicionar Any
request a ele, então ele responderá a qualquer solicitação não configurada com base nesta configuração (versão 0.1.1 e posterior), você pode configurar o servidor para esta opção usando uma string vazia em Send()
método, assim como abaixo:
mockServer . Mock . Send ( "" ) . Receive ( "Test Response" ) ;
Você pode usar mockServer.Mock
antes ou depois de mockServer.Run()
. Para mais detalhes, consulte Projetos de teste.
Você precisa de pelo menos o Visual Studio 2019 (você pode baixar o Community Edition gratuitamente).
Todos os testes utilizam Xunit, para rodar servidor TCP com SSL/TLS, você deve alterar o campo _certificateName
para um nome de certificado em sua máquina. Por favor, preste atenção que você deve ter permissão de leitura na chave privada do certificado.