代码拉取完成,页面将自动刷新
同步操作将从 liyonghelpme/rongYaoDaLuCode 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using System;
using System.IO;
using System.Net;
using TNet;
using UnityEngine;
public class TNUdpMultiLobbyClient : TNLobbyClient
{
private long mNextSend;
private bool mReEnable;
private List<IPEndPoint> mRemoteAddressList = new List<IPEndPoint>();
private TNet.Buffer mRequest;
private UdpProtocol mUdp = new UdpProtocol();
public int remoteEndPort = 0x1139;
public int remoteStartPort = 0x112f;
private void Awake()
{
}
private void OnApplicationPause(bool paused)
{
if (paused)
{
if (TNLobbyClient.isActive)
{
this.mReEnable = true;
this.OnDisable();
}
}
else if (this.mReEnable)
{
this.mReEnable = false;
this.OnEnable();
}
}
protected override void OnDisable()
{
TNLobbyClient.isActive = false;
base.OnDisable();
try
{
this.mUdp.Stop();
if (this.mRequest != null)
{
this.mRequest.Recycle();
this.mRequest = null;
}
if (TNLobbyClient.onChange != null)
{
TNLobbyClient.onChange();
}
}
catch (Exception)
{
}
}
private void OnEnable()
{
if (this.mRequest == null)
{
this.mRequest = TNet.Buffer.Create();
this.mRequest.BeginPacket(Packet.RequestServerList).Write((ushort) 1);
this.mRequest.EndPacket();
}
if (this.mRemoteAddressList.Count == 0)
{
int num = (this.remoteEndPort - this.remoteStartPort) + 1;
for (int j = 0; j < num; j++)
{
int port = this.remoteStartPort + j;
IPEndPoint item = !string.IsNullOrEmpty(base.remoteAddress) ? Tools.ResolveEndPoint(base.remoteAddress, port) : new IPEndPoint(IPAddress.Broadcast, port);
if (item == null)
{
this.mUdp.Error(new IPEndPoint(IPAddress.Loopback, this.mUdp.listeningPort), string.Concat(new object[] { "Invalid address: ", base.remoteAddress, ":", port }));
}
else
{
this.mRemoteAddressList.Add(item);
}
}
}
int num4 = 3;
for (int i = 0; i < num4; i++)
{
if (this.mUdp.Start(Tools.randomPort))
{
break;
}
}
}
private void Update()
{
TNet.Buffer buffer;
IPEndPoint point;
bool flag = false;
long time = DateTime.UtcNow.Ticks / 0x2710L;
while ((this.mUdp != null) && this.mUdp.ReceivePacket(out buffer, out point))
{
if (buffer.size > 0)
{
try
{
BinaryReader reader = buffer.BeginReading();
switch (((Packet) reader.ReadByte()))
{
case Packet.ResponseServerList:
TNLobbyClient.isActive = true;
this.mNextSend = time + 0xbb8L;
TNLobbyClient.knownServers.ReadFrom(reader, time);
TNLobbyClient.knownServers.Cleanup(time);
flag = true;
goto Label_00A2;
case Packet.Error:
TNLobbyClient.errorString = reader.ReadString();
Debug.LogWarning(TNLobbyClient.errorString);
flag = true;
goto Label_00A2;
}
}
catch (Exception)
{
}
}
Label_00A2:
buffer.Recycle();
}
if (TNLobbyClient.knownServers.Cleanup(time))
{
flag = true;
}
if (flag && (TNLobbyClient.onChange != null))
{
TNLobbyClient.onChange();
}
else if ((this.mNextSend < time) && (this.mUdp != null))
{
this.mNextSend = time + 0xbb8L;
int count = this.mRemoteAddressList.Count;
for (int i = 0; i < count; i++)
{
this.mUdp.Send(this.mRequest, this.mRemoteAddressList[i]);
}
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。