- Home /
Error: "A client which was not in the connected player list disconnected. ???"
Hi,
I have two locally connected applications, one being the server, the other being the client. It always worked with my differents builds but this time I have the strangest error:
I don't have any messages in the console saying that a player has connected/disconnected, I only have "Server created" and this error. I should say that both applications works perfectly independently ...
Here's my code:
Server:
using UnityEngine;
using System.Collections;
using System.Diagnostics;
using UnityEngine.UI;
public class ServerPropsMVR : MonoBehaviour {
/* VARIABLES */
int nbClient = 5;
int nbPort = 25000;
bool useNat = false;
public Text connexionStatusText;
int playerCount;
/* INITIALISATION */
void Start (){
playerCount = 0;
Network.InitializeServer (nbClient,nbPort,useNat);
Process.Start("MVR_Oculus_AsClient");
}
/* MESSAGES */
void OnServerInitialized () {
UnityEngine.Debug.Log ("Server created");
}
void OnPlayerConnected () {
UnityEngine.Debug.Log ("Client connected");
playerCount++;
if (playerCount > 0) {
connexionStatusText.text = "Connected";
connexionStatusText.color = Color.green;
}
}
void OnPlayerDisconnected () {
UnityEngine.Debug.Log ("Client disconnected");
playerCount--;
if (playerCount < 1) {
connexionStatusText.text = "Disconnected";
connexionStatusText.color = Color.red;
}
}
}
Client:
using UnityEngine;
using System.Collections;
public class ClientPropsMVR : MonoBehaviour {
// Server properties
string serverIP = "127.0.0.1";
int serverPort = 25000;
/* INITIALISATION */
void Update(){
if (Network.peerType == NetworkPeerType.Disconnected)
Network.Connect(serverIP, serverPort);
}
/* MESSAGES */
void OnConnectedToServer () {
Debug.Log ("Connected to server");
}
void OnApplicationQuit () {
Network.Disconnect (200);
}
}
Answer by Cheryl_Dwyer · Nov 01, 2015 at 11:00 PM
Well, this is quite an old post, and you've probably figured it out already, but I'll write this anyway. This exception, as the error states, is thrown when a player who's not in the connected player list disconnects - so the question is why that player was not in the list. From my experience, this occurs when a client connects and then disconnects again in the same frame (probably before the server has time to add them), so check any methods called once a frame (like Update() and so on) for Network.Disconnect() or Network.CloseConnection(). Also, you don't need to keep track of the player count yourself. Unity keeps a list of all the connected NetworkPlayers, so you can get the number of players by checking the list's length : Network.connections.Length. Hope this helped!
Hey man, thanks for the answer ! A bit late indeed, i moved to another project and Unity changed its network system meanwhile ... but anyway i'll keep it in $$anonymous$$d next time ! Cheers
Your answer
Follow this Question
Related Questions
Time problem with Joining to Multilayer game 1 Answer
Unity Networking - Clients scattered around scenes 0 Answers
OnConnectedToServer not working 1 Answer
Can anyone help me with my network script? 1 Answer
Node.js Problem 1 Answer