//Handling receiveing data; private void ServerReceive(ref List <TcpclientsWithMessage> tmp) { int i; NetworkStream stream; //Creats a NetworkStream (used for sending and receiving data) int no = tmp.Count - 1; TcpclientsWithMessage current_client = tmp[no]; stream = tmp[no].cl.GetStream(); //Gets The Stream of The Connection Thread t = new Thread(() => // Thread (like Timer) { try { byte[] datalength = new byte[3]; // creates a new byte with length 4 ( used for receivng data's length) while ((i = current_client.cl.GetStream().Read(datalength, 0, 3)) != 0) //Keeps Trying to Receive the Size of the Message or Data { //Datalength data is at index 2, so go and fetch it! byte[] data = new byte[Convert.ToInt32(datalength[2])]; for (int j = 0; j < 3; j++) { data[j] = datalength[j]; } current_client.cl.GetStream().Read(data, 3, data.Length - 3); //Receives The Real Data not the Size string message = ""; for (int j = 0; j < data.Length; j++) { if (j != data.Length - 1) { message = message + Convert.ToInt32(data[j]).ToString("X2") + " "; } else { message = message + Convert.ToInt32(data[j]).ToString("X2"); } } //Message output current_client.setMessage(message); DateTime localDate = DateTime.Now; String timestamp = localDate.ToString(new CultureInfo("en-US")); fm1.Invoke((MethodInvoker) delegate // To Write the Received data { txtLog.AppendText(timestamp + " | Client : " + message + Environment.NewLine); }); //----- } } catch (Exception e) { Console.WriteLine(e.Message); } }); t.IsBackground = true; t.Start(); // Start the Thread }
public void StartConnect() { server.Start(); // Starts Listening to Any IPAddress trying to connect to the program with port 8080 Console.WriteLine("Waiting For Connection...."); Thread t = new Thread(() => // Creates a New Thread (like a timer) { while (true) { TcpclientsWithMessage tmp = new TcpclientsWithMessage(server.AcceptTcpClient()); clients.Add(tmp); //Waits for the Client To Connect Console.WriteLine("Connected To Client"); if (clients[clients.Count - 1].cl.Connected) // If you are connected { ServerReceive(ref clients); //Start Receiving setupIDProcess(clients.Count - 1); } } }); t.IsBackground = true; t.Start(); }