public void ListenServerBroadcast(object Handler) { this.FPReady = (EventWaitHandle)Handler; try { client = new TcpClient(ServerIP, port); stream = client.GetStream(); formatter.Serialize(stream, NetCodes["getStream"]); int bufferSize = sizeof(int); byte[] dataBuffer = new byte[bufferSize]; int[] data = { }; int[] msgLen = { }; // array with one elem -- length in bytes int chunkLen = 0; while (true) { // get message length in bytes stream.Read(dataBuffer, 0, sizeof(int)); msgLen = new int[1]; Buffer.BlockCopy(dataBuffer, 0, msgLen, 0, sizeof(int)); // get message dataBuffer = new byte[msgLen[0] * sizeof(int)]; chunkLen = stream.Read(dataBuffer, 0, dataBuffer.Length); data = new int[chunkLen / sizeof(int)]; Buffer.BlockCopy(dataBuffer, 0, data, 0, chunkLen); // if (need_to_skip_frame) { data = new int[0]; } // and better do this before reading from stream ThreadMaster.UpcomingGeneration = data; FPReady.WaitOne(); ThreadMaster.ResumeFieldProcessing(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { client.Close(); } }
private void FieldClick(object sender, MouseButtonEventArgs e) { Point p = e.GetPosition(this); ThreadMaster.Send2Srv((int)p.X, (int)p.Y, gliderDir); }
private void Connect(object sender, RoutedEventArgs e) { MessageBox.Show("Connecting to " + targetIP); ThreadMaster.RUN(field, Dispatcher, targetIP, login, password); }