Can anyone help me with my network script?

So i am trying to learn how to make a networking game, i can start a server and connect to it but im having problems disconnecting, or so i think. Im not sure which functions to use and i was hoping for some help. The script that i made up is:

using UnityEngine;
using System.Collections;

public class NetworkMenu : MonoBehaviour 
{
	public string connectionIP = "127.0.0.1";
    public int connectionPort = 25001;
	
	public GameObject player;
	
	
	
	void OnDisconnectedFromServer(NetworkDisconnection info)
	{
		if (Network.isServer) 
		{
			// If you are the server
			Destroy(GameObject.FindWithTag("Player"));
			MasterServer.UnregisterHost();
		}
		else{
			if (info == NetworkDisconnection.LostConnection)
			{
				// If you lose connection to the server
				Destroy(GameObject.FindWithTag("Player"));
			}else{
				// If you are client and you press disconnect
				Destroy(GameObject.FindWithTag("Player"));
			}
		}
	}
	
	void SpawnPlayer ()
	{
		Instantiate(player, transform.position, Quaternion.identity);
	}
	
	void OnServerInitialized ()
	{
		SpawnPlayer ();
	}
	
	void OnConnectedToServer ()
	{
		SpawnPlayer ();
	}
	
    void OnGUI()
    {
        if (Network.peerType == NetworkPeerType.Disconnected)
        {
            GUI.Label(new Rect(10, 10, 300, 20), "Status: Disconnected");
            if (GUI.Button(new Rect(10, 30, 120, 20), "Client Connect"))
            {
                Network.Connect(connectionIP, connectionPort);
            }
            if (GUI.Button(new Rect(10, 50, 120, 20), "Initialize Server"))
            {
                Network.InitializeServer(32, connectionPort, false);
            }
        }
        else if (Network.peerType == NetworkPeerType.Client)
        {
            GUI.Label(new Rect(10, 10, 300, 20), "Status: Connected as Client");
            if (GUI.Button(new Rect(10, 30, 120, 20), "Disconnect"))
            {
                Network.Disconnect(200);
            }
        }
        else if (Network.peerType == NetworkPeerType.Server)
        {
            GUI.Label(new Rect(10, 10, 300, 20), "Status: Connected as Server");
            if (GUI.Button(new Rect(10, 30, 120, 20), "Disconnect"))
            {
                Network.Disconnect(200);
            }
        }
    }
}

Also for some reason the OnConnectedToServer function isnt being called. What else should i add to this Script? Thanks for any help.

127.0.0.1 isn’t a real IP, it is a loopback address meaning localhost. And I don’t think you can be the server and also be connected to yourself as client. Run two instances on your local network and get the real IP of the server and connect to that.