我有一台服务器,它有一个开放的套接字,可以监听其上的特定文本字符串以执行操作。
我们的 Linux 机器通过以下方式发送这些数据:
echo "text_string" | nc -w 2 server-name port#
这在 Windows 上可行吗(可能是在 powershell 或其他内置实用程序中)?如果可以,怎么做?
答案1
这是给你的一个小 Powershell...应该与任何版本的 PS 兼容...可能是 PSv2 或更高版本。适用于主机名或 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
我写这篇文章非常匆忙……您可能想在其中添加额外的参数验证和错误捕获,但您明白我的意思。同样值得考虑的是,Windows 默认使用 UTF16 LE 编码,因此字符通常是“宽的”,而许多其他系统则使用窄字符。因此,您可能希望将字符串编码为 Unicode 而不是 ASCII 等。取决于您使用它的目的。
或者,如果您希望使它像 Netcat 示例一样简单,只需...下载适用于 Windows 的 Netcat。
答案2
您可以使用油灰为此,请选择原始连接选项。Telnet 也可能适合您
telnet 服务器端口