任何人都可以向我解释这部分代码,因为我想在网络文件中使用此代码构建一个控制台应用程序(制作连接到移动游戏的服务器),我想知道它的含义。
bool Local = false; // or bool Local = true;
IPAddress[] _Addresses = Dns.GetHostEntry(Environment.MachineName).AddressList;
IPEndPoint _LocalEP = new IPEndPoint(_Addresses[_Addresses.Length - 1], Constants.ServerPort);
this._Listener = new Socket(_LocalEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
this._Listener.ReceiveBufferSize = 2048;
this._Listener.SendBufferSize = 2048;
if (Local)
{
this._Listener.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), Constants.ServerPort));
}
else
{
if (_LocalEP.AddressFamily == AddressFamily.InterNetworkV6)
{
this._Listener.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false);
this._Listener.Bind(new IPEndPoint(IPAddress.IPv6Any, _LocalEP.Port));
}
else
{
this._Listener.Bind(_LocalEP);
}
}
答案 0 :(得分:1)
您无法访问代码,因为您永远不会分配变量Local
,默认情况下始终为false
。意味着永远不会达到if (Local)
的真正分支。
因此,将其设置为true / false将不会更改它,因为它始终是常量并包含其中一个分支并排除另一个分支。
如果您打算将其用作调试(在编辑器中手动设置true / false),您可以忽略它或写入没有if
的所有行并改为注释它们。如果是生产代码,那么您的逻辑就会出现问题,并且必须以某种方式更新“本地”变量。
答案 1 :(得分:0)
您永远不会设置bool Local
的值,当您在if
中使用它时,它始终具有默认值false
。