while I am trying following simple code its throws and error of network Stream has null reference when using stream.write()
What I have tried:
This is server code:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSendCommand_Click(object sender, EventArgs e)
{
string message = "SCICOM ECIL BARC|ZONE 000|SERVER 000|127.0.0.1|TVFS 007|Zone 003|127.0.0.1|GET_STAT|BARC ECIL SCICOM";
Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
TcpClient tc = new TcpClient("127.0.0.1", 8080);
NetworkStream ns = tc.GetStream();
ns.Write(data, 0, data.Length);
MessageBox.Show("Command is send.");
data = new Byte[256];
String responseData = String.Empty;
Int32 bytes = ns.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
txtResponseShow.Text = responseData;
Console.WriteLine("Received: {0}", responseData);
ns.Close();
tc.Close();
}
}
this is client code:
public partial class Form1 : Form
{
static IPAddress localAddr = IPAddress.Parse("127.0.0.1");
NetworkStream stream;
String responseData = "";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Visible = false; label2.Visible = false; label3.Visible = false; label4.Visible = false; label5.Visible = false; label6.Visible = false;
txtZoneId.Visible = false; txtUnitId.Visible = false; txtSupplyVtg.Visible = false; txtTemp.Visible = false; txtBatteryStatus.Visible = false;
cbUnitStatus.Visible = false;
}
private void btnStart_Click(object sender, EventArgs e)
{
TcpListener listener = new TcpListener(localAddr, 8080);
listener.Start();
MessageBox.Show("Simulator started");
Byte[] bytes = new Byte[256];
String data = null;
{
Console.Write("Waiting for a connection....");
TcpClient clientSocket = listener.AcceptTcpClient();
Console.WriteLine("Connected!");
data = null;
stream = clientSocket.GetStream();
int i = stream.Read(bytes, 0, bytes.Length);
{
data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("Received: {0}", data);
char[] spearator = { '|' };
String[] dataStr = data.Split(spearator, 9);
if (dataStr[0].Equals("SCICOM ECIL BARC") && dataStr[7].Equals("GET_STAT") && dataStr[8].Equals("BARC ECIL SCICOM"))
{
String responseData = "SCICOM ECIL BARC|Zone003|Server003|127.0.0.1|127.0.0.1|RES_GET_STAT|Active|3.3|56|active|BARC ECIL SCICOM";
Console.WriteLine(responseData);
byte[] msg = System.Text.Encoding.ASCII.GetBytes(responseData);
stream.Write(msg, 0, msg.Length);
MessageBox.Show("Response send");
Console.WriteLine("Sent: {0}", responseData);
}
}
}
}
private void btnSend_Click(object sender, EventArgs e)
{
responseData = "SCICOM ECIL BARC|" + txtZoneId.Text + "|" + txtUnitId.Text + "|" + localAddr +"|127.0.0.1|RES_GET_STAT|" + cbUnitStatus.Text + "|" + txtSupplyVtg.Text + "|" + txtTemp.Text + "|" + txtBatteryStatus.Text + "|BARC ECIL SCICOM";
Console.WriteLine(responseData);
byte[] msg = System.Text.Encoding.ASCII.GetBytes(responseData);
stream.Write(msg, 0, msg.Length);
Console.WriteLine("Sent: {0}", responseData);