private static void OnReceive() {//reminder that stream sends as much info as possible before it actually performs the send. byte[] _sizeinfo = new byte[4]; byte[] _receivedbuffer = new byte[1024]; int totalread = 0, currentread = 0; try { currentread = totalread = _clientSocket.Receive(_sizeinfo); if (totalread <= 0) { Logging.Write("Server no longer responding: Disconnected.", 3); connected = false; Reconnect(); return; } else { while (totalread < _sizeinfo.Length && currentread > 0) { currentread = _clientSocket.Receive(_sizeinfo, totalread, _sizeinfo.Length - totalread, SocketFlags.None); totalread += currentread; } int messagesize = 0; messagesize |= _sizeinfo[0]; messagesize |= (_sizeinfo[1] << 8); messagesize |= (_sizeinfo[2] << 16); messagesize |= (_sizeinfo[3] << 24); //bitshift the bytes. byte[] data = new byte[messagesize]; totalread = 0; currentread = totalread = _clientSocket.Receive(data, totalread, data.Length - totalread, SocketFlags.None); while (totalread < messagesize && currentread > 0) { currentread = _clientSocket.Receive(data, totalread, data.Length - totalread, SocketFlags.None); totalread += currentread; } //handlednetworkinformation ClientHandleNetworkData.HandleNetworkInformation(data); } } catch (SocketException) { Logging.Write("Server socket has unexpectedly closed. Retrying the connection.", 1); connected = false; Reconnect(); return; } }
private void networkSetup() { ServerHandleNetworkData.InitializeNetworkPackages(); ClientHandleNetworkData.InitializeNetworkPackages(); toolStripCapsStatus.Text = KeyText(); toolStripModeStatus.Text = ServerMode; switch (Settings.Mode) { case "Server": Server.SetupServer(); break; case "Client": Client.ConnectToServer(); break; } }