NetworkStream превращается в null после конструктора
У меня есть класс TcpPeer который представляет TCP сторону при конвертации с другого способа передачи данных (для этого и нужен интерфейс IPeer). Но по неизвестной мне причине когда я вызываю read и write не из констуктора, то у меня вылетает NullReferenceException на строчке с использованием _stream
using System.Net.Sockets;
using System.Net;
using System.Text;
class TcpPeer : IPeer
{
private TcpClient _client;
private NetworkStream _stream;
public TcpPeer(string ip, int port)
{
_client = new TcpClient(ip, port);
_stream = _client.GetStream();
}
public byte[] Read()
{
byte[] data = new byte[8192];
int len = _stream.Read(data, 0, data.Length);
Array.Resize(ref data, len);
return data;
}
public void Write(byte[] msg)
{
//и тут
_stream.Write(msg, 0, msg.Length);
}
}
interface IPeer
{
byte[] Read();
void Write(byte[] data);
}
Вот код с которым я смог воссоздать ошибку
var tcpPeer = new TcpPeer("127.0.0.1",85);
try
{
tcpPeer.Write(Encoding.Unicode.GetBytes("Hello world"));
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
/*
System.NullReferenceException: Object reference not set to an instance of an object.
at TcpPeer.Write(Byte[] msg) in
C:\CSharp\tcptest\tcptest\TcpPeer.cs:line 33
at Program.Main() in C:\CSharp\tcptest\tcptest\Program.cs:line 13
*/
}