1
일부 java 서버 코드와 통신하는 Powershell 스크립트를 작성하려고합니다. 스크립트는 서버와 통신하기 위해 다음 함수를 호출하고 현재 서버는받은 메시지를 인쇄하고 있습니다. 나는하여 TcpClient를 닫기 전에 내가 while 루프가없는 스크립트에서 While 루프를 추가 한 후 Powershell 스크립트 코드 실행 문제가 발생했습니다.
Function Send-StringOverTcp (
[Parameter(Mandatory=$True)][String]$DataToSend,
[Parameter(Mandatory=$True)][UInt16]$Port)
{
Try {
$IPAddress = "XX.XXX.XX.X" #ip of server
$IPAddress = [IPAddress]$IPAddress.Trim()
$ErrorActionPreference = "Stop"
$TCPClient = New-Object Net.Sockets.TcpClient
$IPEndpoint = New-Object Net.IPEndPoint($IPAddress, $Port)
$TCPClient.Connect($IPEndpoint)
Write-Host -ForegroundColor Green "Connection established with
$IPAddress on port $Port"
$NetStream = $TCPClient.GetStream()
[Byte[]]$Buffer = [Text.Encoding]::ASCII.GetBytes($DataToSend)
$NetStream.Write($Buffer, 0, $Buffer.Length)
$NetStream.Flush()
Write-Host -ForegroundColor Green "Data sent to server"
while($true) {
}
If ($NetStream) { $NetStream.close() }
If ($TCPClient) { $TCPClient.close() }
} catch {
Write-Error $_.Exception.ToString()
Read-Host -Prompt "The above error occurred. Press Enter to exit."
}
}
이 메시지는 서버와 문제없이 밖으로 서버 인쇄를로 전송됩니다. 그러나 while 루프를 추가 할 때 while 루프가 끝날 때까지 스크립트는 실제로 서버 코드에 메시지를 보내지 않습니다. 줄을 얻을 수있는 방법이 있습니까? while 루프가 끝나기 전에 줄을 얻을 수있는 방법이 있습니까?
$NetStream.Write($Buffer, 0, $Buffer.Length)
$NetStream.Flush()
Powershell이 올바른 순서로 while 문 앞에 그 문을 실행하지 않는 이유가 있습니까?