почему $socket.Available не работает а $stream.DataAvailable работает?

Пишу проект на powershell & python, возникла проблема. Ранее использовал stream и tcpClient при работе, но теперь использую socket по техническим проблемам. Ранее при работе использовал $stream.DataAvailable для проверки есть ли данные в буфере. Однако сейчас я попробовал провернуть то же с сокетом: $socket.Available -gt 0, но условие всегда ложно.

на серверной части всё верно, ведь когда был stream всё работало исправно. Есть ли догадки? вот полный код на данный момент с сокетом:

$server_port = 1336;
$server_ip = '127.0.0.1';

$socket = New-Object System.Net.Sockets.Socket(
    [System.Net.Sockets.AddressFamily]::InterNetwork,
    [System.Net.Sockets.SocketType]::Stream,
    [System.Net.Sockets.ProtocolType]::Tcp
);

while ($socket.Available -gt 0) {
      Write("Packet Received");
      $packet_length = New-Object byte[] 1;
      $len = $socket.Receive($packet_length);
      $packet = New-Object byte[] $packet_length[0];
      $len = $socket.Receive($packet);
}

Вот код с $stream.DataAvailable:

$port = 1336;
$server_ip = '127.0.0.1';

$ip = [System.Net.Dns]::GetHostAddresses($server_ip) | Where-Object 
{$PSItem.AddressFamily -eq 'InterNetwork'};
$socket = New-Object System.Net.Sockets.TCPClient($ip, $port);
$stream = $socket.GetStream();
while ($stream.DataAvailable) {
      Write("Packet Received");
      $packet_length = New-Object byte[] 1;
      $len = $stream.Read($packet_length, 0, $packet_length.Length);
      $packet = New-Object byte[] $packet_length[0];
      $len = $stream.Read($packet, 0, $packet.Length);
}

Ответы (0 шт):