我有一个服务器有一个开放的套接字,侦听一个特定的文本string,以执行一个操作。
我们的linux机器通过以下方式发送此数
echo "text_string" | nc -w 2 server-name port#
这可能在Windows上(可能在PowerShell或其他内置工具)? 如果是这样,怎么样?
这里有一个小小的PowerShell for …应该与任何版本的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
我非常急切地写这个…你可能想把额外的参数validation和错误陷阱放在那里,但你明白了。 另外值得考虑的是Windows默认使用UTF16 LE编码,所以字符通常是“宽”的,而不是许多其他使用窄字符的系统。 所以你可能想要将string编码为Unicode而不是ASCII等。取决于你使用的是什么。
或者,如果你想让它像你的Netcat例子一样简单,只需…下载Netcat for Windows。
您可以使用PuTTY ,select原始连接选项。 Telnet也可以为你工作
telnet服务器端口