Hi guys! I got some issue with my app in Unity using Photon Server, I got multiplayer strategy for mobile, My server workes fine if i set local IP on PCs. But i'm new in server programming, so i'm not sure how should it works with mobile, if i use local ip, i got no connection, and if i use public ip there is no connection too, maybe i should set my IP in PhotonServer.xml, but if i do that i gor exeption:
Exception: Socket::Bind() 89.21.67.107:5055 The requested address is not valid in its context
also here is my client code in Unity:
using System.Collections.Generic;
using ExitGames.Client.Photon;
using RagingRealms.Common.Logs;
public interface IOperationListener
{
void OnOperationResponse(OperationResponse operationResponse);
void Update();
}
public class PhotonClient : IPhotonPeerListener
{
private const string ServerAddress = "89.21.67.107:5055";
private const string ServerApplicationName = "RagingServer";
#region Singleton
private static PhotonClient _instance;
public static PhotonClient Instance
{
get
{
if (_instance == null)
_instance = new PhotonClient();
return _instance;
}
}
private PhotonClient()
{
Status = "Disconnected";
Peer = new PhotonPeer(this, ConnectionProtocol.Udp);
Peer.Connect(ServerAddress, ServerApplicationName);
CustomTypes.RegisterCustomTypes();
Update();
Log.Debug("Start connecting...");
}
#endregion
#region Public Properties
public string Status { get; private set; }
public bool IsConnected
{
get { return Peer != null && Peer.PeerState == PeerStateValue.Connected; }
}
public PhotonPeer Peer { get; private set; }
#endregion
#region IPhotonPeerListener implementation
public void DebugReturn(DebugLevel level, string message)
{
}
public void OnEvent(EventData eventData)
{
}
public void OnOperationResponse(OperationResponse operationResponse)
{
if (_listeners.Count > 0)
{
for (int i = _listeners.Count - 1; i >= 0; i--)
{
_listeners[i].OnOperationResponse(operationResponse);
}
}
}
public void OnStatusChanged(StatusCode statusCode)
{
Log.Debug("PhotonClient status changed: " + statusCode);
Status = statusCode.ToString();
}
#endregion
#region Public Inteface
private readonly List _listeners = new List();
public void AddOperationListener(IOperationListener listener)
{
if (_listeners.Contains(listener))
return;
_listeners.Add(listener);
}
public void RemoveOperationListener(IOperationListener listener)
{
if (_listeners.Contains(listener))
_listeners.Remove(listener);
}
public void Disconnect()
{
if (Peer == null) return;
Peer.Disconnect();
}
public void Update()
{
if (Peer != null)
Peer.Service();
if (_listeners.Count > 0)
{
for (int i = _listeners.Count - 1; i >= 0; i--)
{
_listeners[i].Update();
}
}
}
#endregion
}
So any help will be good, because i didn't find any solutions or examples for mobile with using public ip
P.S. sorry about bad Eglish;![:) :)]()
Exception: Socket::Bind() 89.21.67.107:5055 The requested address is not valid in its context
also here is my client code in Unity:
using System.Collections.Generic;
using ExitGames.Client.Photon;
using RagingRealms.Common.Logs;
public interface IOperationListener
{
void OnOperationResponse(OperationResponse operationResponse);
void Update();
}
public class PhotonClient : IPhotonPeerListener
{
private const string ServerAddress = "89.21.67.107:5055";
private const string ServerApplicationName = "RagingServer";
#region Singleton
private static PhotonClient _instance;
public static PhotonClient Instance
{
get
{
if (_instance == null)
_instance = new PhotonClient();
return _instance;
}
}
private PhotonClient()
{
Status = "Disconnected";
Peer = new PhotonPeer(this, ConnectionProtocol.Udp);
Peer.Connect(ServerAddress, ServerApplicationName);
CustomTypes.RegisterCustomTypes();
Update();
Log.Debug("Start connecting...");
}
#endregion
#region Public Properties
public string Status { get; private set; }
public bool IsConnected
{
get { return Peer != null && Peer.PeerState == PeerStateValue.Connected; }
}
public PhotonPeer Peer { get; private set; }
#endregion
#region IPhotonPeerListener implementation
public void DebugReturn(DebugLevel level, string message)
{
}
public void OnEvent(EventData eventData)
{
}
public void OnOperationResponse(OperationResponse operationResponse)
{
if (_listeners.Count > 0)
{
for (int i = _listeners.Count - 1; i >= 0; i--)
{
_listeners[i].OnOperationResponse(operationResponse);
}
}
}
public void OnStatusChanged(StatusCode statusCode)
{
Log.Debug("PhotonClient status changed: " + statusCode);
Status = statusCode.ToString();
}
#endregion
#region Public Inteface
private readonly List _listeners = new List();
public void AddOperationListener(IOperationListener listener)
{
if (_listeners.Contains(listener))
return;
_listeners.Add(listener);
}
public void RemoveOperationListener(IOperationListener listener)
{
if (_listeners.Contains(listener))
_listeners.Remove(listener);
}
public void Disconnect()
{
if (Peer == null) return;
Peer.Disconnect();
}
public void Update()
{
if (Peer != null)
Peer.Service();
if (_listeners.Count > 0)
{
for (int i = _listeners.Count - 1; i >= 0; i--)
{
_listeners[i].Update();
}
}
}
#endregion
}
So any help will be good, because i didn't find any solutions or examples for mobile with using public ip
P.S. sorry about bad Eglish;
