Envie uma string de texto para um soquete no Windows

1

Eu tenho um servidor que tem um soquete aberto que ouve uma determinada seqüência de texto para executar uma ação.

Nossas máquinas linux enviam esses dados via:

echo "text_string" | nc -w 2 server-name port#

Isso é possível no Windows (possivelmente em powershell ou outros utilitários internos)? Se sim, como?

    
por rainereality 19.09.2014 / 00:09

2 respostas

4

Aqui está um pequeno Powershell para você ... deve ser compatível com qualquer versão do PS ... talvez PSv2 ou melhor. Funciona com nomes de host ou endereços IP.

Function Send-StringOverTcp ( 
    [Parameter(Mandatory=$True)][String]$DataToSend,
    [Parameter(Mandatory=$True)][String]$Hostname, 
    [Parameter(Mandatory=$True)][UInt16]$Port)
{
    Try
    {
        $ErrorActionPreference = "Stop"
        $TCPClient  = New-Object Net.Sockets.TcpClient
        $IPEndpoint = New-Object Net.IPEndPoint($([Net.Dns]::GetHostEntry($Hostname)).AddressList[0], $Port)
        $TCPClient.Connect($IPEndpoint)
        $NetStream  = $TCPClient.GetStream()
        [Byte[]]$Buffer = [Text.Encoding]::ASCII.GetBytes($DataToSend)
        $NetStream.Write($Buffer, 0, $Buffer.Length)
        $NetStream.Flush()
    }
    Finally
    {
        If ($NetStream) { $NetStream.Dispose() }
        If ($TCPClient) { $TCPClient.Dispose() }
    }
}

    Send-StringOverTcp -DataToSend 'foo!' -Hostname google.com -Port 80

Eu escrevi isso muito apressadamente ... você pode querer colocar validação extra de parâmetro e erro de trapping lá, mas você começa a idéia. Também vale a pena considerar que o Windows usa a codificação UTF16 LE por padrão, de modo que os caracteres são geralmente "largos", ao contrário de muitos outros sistemas que usam caracteres estreitos. Então você pode querer codificar a string como Unicode ao invés de ASCII, etc. Depende do que você está usando.

Ou se preferir simplificar o seu exemplo do Netcat, basta ... fazer o download do Netcat para Windows.

    
por 19.09.2014 / 00:50
4

você pode usar PuTTY para isso, selecione a opção de conexão bruta . Telnet também pode funcionar para você

telnet server port

    
por 19.09.2014 / 00:32