- Home /
Question by
ash9991win · Jun 10, 2016 at 03:16 PM ·
networkingmultiplayernetworkmultiplayer-networking
I am using NetworkDiscovery class of Unity to host and listen for a game session. The server broadcasts the game and the client is able to find a game hosted by the server, but am not able to connect to the server at all
Here is the lobby manager code:
//The client side
public void JoinGame()
{
ClientDiscovery discovery = gameObject.AddComponent<ClientDiscovery>();
discovery.Initialize();
discovery.StartAsClient();
}
//The server side
public void StartupServer()
{
Debug.Log("Starting server" + singleton.networkAddress);
mDiscovery = gameObject.AddComponent<ClientDiscovery>();
mDiscovery.Initialize();
mDiscovery.StartAsServer();
}
Here is the network discovery code:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using System;
public class ClientDiscovery : NetworkDiscovery {
public static bool isConnected = false;
void Start()
{
isConnected = false;
}
static string BytesToString(byte[] bytes)
{
char[] chars = new char[bytes.Length / sizeof(char)];
Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
return new string(chars);
}
public override void OnReceivedBroadcast(string fromAddress, string data)
{
if (!isConnected)
{
base.OnReceivedBroadcast(fromAddress, data);
NetworkManager.singleton.networkAddress + "PORT " + NetworkManager.singleton.networkPort);
//NetworkManager.singleton.StartClient();
if (broadcastsReceived != null)
{
foreach (var addr in broadcastsReceived.Keys)
{
var value = broadcastsReceived[addr];
string dataString = BytesToString(value.broadcastData);
var items = dataString.Split(':');
if (items.Length == 3 && items[0] == "NetworkManager")
{
if (NetworkManager.singleton != null && NetworkManager.singleton.client == null)
{
LobbyManager.singleton.networkAddress = items[1];
LobbyManager.singleton.networkPort = Convert.ToInt32(items[2]);
LobbyManager.instance.StartTheClient();
Debug.LogError(LobbyManager.singleton.client);
}
}
}
}
isConnected = true;
}
}
}
Comment