2015-08-24 32 views
1

所以我相當新的編程,並決定嘗試一些網絡,但我卡住了。我試圖創建一個簡單的客戶端和服務器來建立連接。顯然,它不工作,我環顧四周,但找不到任何新的信息來幫助我。所以我決定在這裏嘗試。Windows 8.1 StreamSocketListener c#

這是當我運行在客戶端和服務器發生的事情:

(我運行在同一臺計算機上的客戶端和服務器)

*客戶端連接到服務器(本地主機):

-System.Exception:連接嘗試失敗,因爲連接方在一段時間後沒有正確響應,或者由於連接的主機未響應而建立的連接失敗。

*客戶端連接到服務器時,服務器沒有運行:

-System.Exception:無連接可以作出,因爲目標機器積極地拒絕它。

*客戶端連接在端口80爲localhost(這不是服務器):

- 連接建立

*客戶端連接到主機名google.com在端口80:

- 連接建立

*客戶端連接到隨機的IP和端口:

-System.Exception:沒有這樣的主機是已知的。

Servercode:

public sealed partial class MainPage : Page 
{ 
    StreamSocketListener _listener = new StreamSocketListener(); 
    string port = "1800"; 

    public MainPage() 
    { 
     this.InitializeComponent(); 
     listener(); 
    } 
    private async void listener() 
    { 
     _listener.ConnectionReceived += listenerConnectionReceived; 
     await _listener.BindServiceNameAsync(port); 
    } 
    void listenerConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args) 
    { 
     tb_server.Text = "Connection received."; 
    } 
    private void btn1_Click(object sender, RoutedEventArgs e) 
    { 

    } 
} 

Clientcode:

public sealed partial class MainPage : Page 
{ 
    StreamSocketListener _listener = new StreamSocketListener(); 
    string port = "1800"; 

    public MainPage() 
    { 
     this.InitializeComponent(); 
     listener(); 
    } 
    private async void listener() 
    { 
     _listener.ConnectionReceived += listenerConnectionReceived; 
     await _listener.BindServiceNameAsync(port); 
    } 
    void listenerConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args) 
    { 
     tb_server.Text = "Connection received."; 
    } 
    private void btn1_Click(object sender, RoutedEventArgs e) 
    { 

    } 
} 

回答

0

看看在StreamSocket樣品。

調試應用程序時,Visual Studio會自動創建一個loopback exemption來測試從WinRT客戶端(StreamSocket)到本地服務器的連接。

從本地客戶端到WinRT服務器(StreamSocketListener),豁免不起作用。您需要在另一臺機器上運行服務器。

此外,如果您使用SreamSocketListener您需要internetClientServer capability

如果您的服務器正在本地網絡中的另一臺計算機上運行,​​則需要privateNetworkClientServer capability

+0

謝謝,我通過將兩個獨立的應用程序(服務器和客戶端)整合到一個應用程序中,解決了這個問題。 –