Comment se connecter à un socket tcp avec powershell pour envoyer et recevoir des données?

J'ai écrit un petit script Powershell.

Il utilise .Net Système.IO.StreamReader et du Système.IO.StreamWriter pour lire et écrire des données depuis/vers le socket TCP.

Je tiens à vous connecter à une prise telnet style et envoyer/recevoir des commandes.

Je suis en train de lire les lignes avec les ReadLine() la méthode du Système.IO.StreamReader, mais les données à partir du serveur peut-être ne pas arriver à temps(?) ou IDK. Je ne suis pas à l'aide de commandes asynchrones. Merci de m'aider!

Voici mon script:

$FTPServer = "localhost"
$FTPPort = "21"
$tcpConnection = New-Object System.Net.Sockets.TcpClient($FTPServer, $FTPPort)
$tcpStream = $tcpConnection.GetStream()
$reader = New-Object System.IO.StreamReader($tcpStream)
$writer = New-Object System.IO.StreamWriter($tcpStream)
$writer.AutoFlush = $true
while ($tcpConnection.Connected)
{
while ($tcpStream.DataAvailable)
{
$reader.ReadLine()
}
if ($tcpConnection.Connected)
{
Write-Host -NoNewline "prompt> "
$command = Read-Host
if ($command -eq "escape")
{
break
}
$writer.WriteLine($command) | Out-Null
}
}
$reader.Close()
$writer.Close()
$tcpConnection.Close()

Et voici le résultat:

PS C:\Windows\System32\WindowsPowerShell\v1.0> test.ps1
220 Microsoft FTP Service
prompt> user username
331 Password required
prompt> pass password
230-Directory has 58,145,996,800 bytes of disk space available.
prompt> 
230 User logged in.
500 Command not understood.
prompt> help
214-The following commands are recognized (* ==>'s unimplemented).
ABOR 
ACCT 
ADAT *
ALLO 
APPE 
AUTH 
CCC 
CDUP 
CWD 
DELE 
ENC *
EPRT 
EPSV 
FEAT 
HELP 
HOST 
LANG 
LIST 
MDTM 
MIC *
MKD 
MODE 
NLST 
NOOP 
OPTS 
PASS 
PASV 
PBSZ 
PORT 
PROT 
PWD 
QUIT 
REIN 
REST 
RETR 
RMD 
RNFR 
RNTO 
SITE 
prompt> escape
PS C:\Windows\System32\WindowsPowerShell\v1.0>
Il est un exemple ici. C'est la mise en œuvre de l'OI à l'aide de tampons. Je pense que dans votre code, vous manquez le TCP en entrée lors de l'attente pour l'entrée de l'utilisateur. Aussi cette une est mis en œuvre à l'aide de tampons.

OriginalL'auteur gazsiazasz | 2015-04-20