需要在网络文件的控制台应用程序中解释此C#代码

时间:2017-02-26 07:49:18

标签: c# .net visual-studio network-programming ip

任何人都可以向我解释这部分代码,因为我想在网络文件中使用此代码构建一个控制台应用程序(制作连接到移动游戏的服务器),我想知道它的含义。

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);
   }       
}

2 个答案:

答案 0 :(得分:1)

您无法访问代码,因为您永远不会分配变量Local,默认情况下始终为false。意味着永远不会达到if (Local)的真正分支。

因此,将其设置为true / false将不会更改它,因为它始终是常量并包含其中一个分支并排除另一个分支。

如果您打算将其用作调试(在编辑器中手动设置true / false),您可以忽略它或写入没有if的所有行并改为注释它们。如果是生产代码,那么您的逻辑就会出现问题,并且必须以某种方式更新“本地”变量。

答案 1 :(得分:0)

您永远不会设置bool Local的值,当您在if中使用它时,它始终具有默认值false