public void Start() { InitPeer(); if (_State == RakNetClientState.PeerInitOK) { StartupResult result = _peer.Startup(1, _socketDesc, 1); Log.Debug("Start Result: " + result); if (result == StartupResult.RAKNET_STARTED) { _State = RakNetClientState.StartUpOK; RakNet.FT_ConnectProcess process = new RakNet.FT_ConnectProcess(); process.SetResultHandler(new RakNetClientResultHandler(this)); AttachInterface2(process); ConnectionAttemptResult connectResult = _peer.Connect(_sServerIP, _nServerPort, "", 0); Log.Debug("Connect Result: " + connectResult); if (ConnectionAttemptResult.CONNECTION_ATTEMPT_STARTED == connectResult) { _State = RakNetClientState.ConnectOK; _systemAddress = new SystemAddress(_sServerIP, _nServerPort); _ReadThread.Start(); } else { _State = RakNetClientState.ConnectError; } } else { Log.Debug("RakNet.RakPeerInterface.GetInstance() Error : " + result); _State = RakNetClientState.StartUpError; } } }
/// <summary> /// 启动是否成功 /// </summary> /// <returns></returns> public bool StartUpRaknet(bool isIPV6) { if (IsStartUp == false) { if (mClient == null) { mClient = RakPeerInterface.GetInstance(); } SocketDescriptor descriptor = new SocketDescriptor(); //descriptor.port = 0; if (isIPV6 == true) { // 这里有尼玛个天坑,AF_INET6 這个宏在windows下的值是23,在 mac osx下的值是30 descriptor.socketFamily = 30; } else { descriptor.socketFamily = 2; } StartupResult result = mClient.Startup(1, descriptor, 1); if (result == StartupResult.RAKNET_STARTED) { IsStartUp = true; return(true); } else { Debug.LogError(string.Format("初始化raknet失败,result = {0}", result)); return(false); } } else { return(true); } }