I'm trying to make a client and server which can read and write info back and forth between each other. I can write from the client and server reads it but not vise versa and I have no idea why. Nobody on here seems to know when I asked before and I cant find anything online that works. If you know please tell me and not tell me to go read an article about TCP because it doesn't help at all.
Client:
namespace ExampleClient
{
public partial class Form1 : Form
{
public static bool IsConnected;
public static NetworkStream Writer;
public static NetworkStream Receiver;
public Form1()
{
InitializeComponent();
}
private void BtnConnect_Click(object sender, EventArgs e)
{
TcpClient Connector = new TcpClient();
Connector.Connect(TxtIP.Text, Convert.ToInt32(TxtPort.Text));
IsConnected = true;
Writer = Connector.GetStream();
Console.WriteLine("Connected");
System.Threading.Thread Rec = new System.Threading.Thread(new System.Threading.ThreadStart(Receive));
Rec.Start();
}
private void BtnWrite_Click(object sender, EventArgs e)
{
try{
byte[] Packet = Encoding.ASCII.GetBytes("Client Write Test");
Writer.Write(Packet, 0, Packet.Length);
Writer.Flush();}
catch{
try { Writer.Close();} catch { }}
}
public static void Receive()
{
while (true){
try{
byte[] RecPacket = new byte[1000];
Receiver.Read(RecPacket, 0, RecPacket.Length);
Receiver.Flush();
string Message = Encoding.ASCII.GetString(RecPacket);
MessageBox.Show(Message);
}
catch { break;}
}
}
}
}
Receiver/ Server:
namespace ExampleServer
{
public partial class Form1 : Form
{
public static NetworkStream Writer;
public static NetworkStream Receiver;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
TcpListener Server = new TcpListener(2002);
Server.Start();
TcpClient Connection = Server.AcceptTcpClient();
Receiver = Connection.GetStream();
System.Threading.Thread Rec = new System.Threading.Thread(new System.Threading.ThreadStart(Receive));
Rec.Start();
}
public static void Receive()
{
while (true)
{
try
{
byte[] RecPacket = new byte[1000];
Receiver.Read(RecPacket, 0, RecPacket.Length);
Receiver.Flush();
string Message = Encoding.ASCII.GetString(RecPacket);
MessageBox.Show(Message);
try{
byte[] Packet = Encoding.ASCII.GetBytes("Server Write Test");
Writer.Write(Packet, 0, Packet.Length);
Writer.Flush();}
catch{
try { Writer.Close(); } catch { }}
}
catch { break; }
}
}
}
}
So when the server reads the message from the client, it displays it which works fine but when it goes to write a message back to the client, it crashes with the error "system.nullreferenceeexception: object reference not set to an instance of an object. at exampleserver.form1.receive()".