private void InitializeServer() { _connection_type = INSTANCE_TYPE.SERVER_TYPE; NetPeerConfiguration config = new NetPeerConfiguration("ServerClientClient"); config.AcceptIncomingConnections = true; config.MaximumConnections = 2; config.Port = _server_port; config.EnableMessageType(NetIncomingMessageType.DiscoveryResponse); _connection = new NetServer(config); Debug.Assert(_connection != null); _connection.Start(); NetIncomingMessage pInMsg; bool ready = false; Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("\nServer Instance\nWaiting for clients...\n"); int count = 0; while (!ready) { if ((pInMsg = _connection.ReadMessage()) != null && pInMsg.MessageType == NetIncomingMessageType.StatusChanged) { if ((NetConnectionStatus)pInMsg.ReadByte() == NetConnectionStatus.Connected) { NetOutgoingMessage m = _connection.CreateMessage(); m.Write(_connection.ConnectionsCount); _connection.SendMessage(m, _connection.Connections[_connection.ConnectionsCount - 1], NetDeliveryMethod.ReliableOrdered); if (count != _connection.ConnectionsCount) { count = _connection.ConnectionsCount; Console.WriteLine("\nClients connected: " + count + "\n"); } if (_connection.ConnectionsCount >= 2) { ready = true; } } } } }
private void InitializeClient() { bool ready = false; NetIncomingMessage pInMsg; while (!ready) { if ((pInMsg = _connection.ReadMessage()) != null && pInMsg.MessageType == NetIncomingMessageType.Data) { _connection_type = (INSTANCE_TYPE)pInMsg.ReadInt32(); Debug.Assert(_connection_type == INSTANCE_TYPE.CLIENT_1_TYPE || _connection_type == INSTANCE_TYPE.CLIENT_2_TYPE); ready = true; } } }