2017-02-26 17 views
0

任何人都可以解釋我的這部分代碼,因爲我想在網絡文件中使用此代碼構建控制檯應用程序(用於製作連接到手機遊戲的服務器)我想知道它的含義。需要網絡文件中的控制檯應用程序中的此C#代碼的說明

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

回答

1

你得到可達代碼,因爲你變Local從未分配,並且將永遠是false默認。意味着if (Local)的真正分支將永遠不會到達。

因此,使它成真/假不會改變它,因爲它始終是一個常量,幷包含其中一個分支並排除其他分支。

如果您打算將它用作調試(在編輯器中手動設置true/false),您可以忽略它或寫入沒有if的所有行,並對它們進行註釋。如果它是生產代碼,那麼你的邏輯出現問題,必須以某種方式更新「本地」變量。

+0

謝謝你的建議。 但是現在我已經改變了這個問題,所以請你重新回答這個新問題。 –

+0

你並沒有真正改變你的代碼本身。你做了'= false',但是這在任何情況下都是默認的。所以它仍然是不變的。至於網絡資料本身的解釋,不幸的是我在這裏幫不了你。我建議你問一個關於網絡細節的單獨問題 –

0

你永遠不會設置的值,當你在if中使用它時,它的默認值將是false

相關問題