【问题标题】:Windows 8.1 StreamSocketListener c#Windows 8.1 StreamSocketListener c#
【发布时间】:2015-08-24 20:44:33
【问题描述】:

所以我对编程很陌生,并决定尝试一些网络,但我被困住了。我试图创建一个简单的客户端和服务器只是为了建立连接。显然,它不起作用,我环顾四周,但找不到任何 信息来帮助我。所以我决定在这里试试。

这是我运行客户端和服务器时发生的情况:

(我在同一台计算机上运行客户端和服务器)

*客户端连接到服务器(本地主机):

-System.Exception:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。

*当服务器不运行时客户端连接到服务器:

-System.Exception: 由于目标机器主动拒绝,无法建立连接。

*客户端连接到 localhost 的 80 端口(不是服务器):

-建立连接

*客户端在 80 端口连接到 HostName google.com:

-建立连接

*客户端连接随机ip和端口:

-System.Exception: 没有这样的主机是已知的。

服务器代码:

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)
    {

    }
}

客户代码:

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)
    {

    }
}

【问题讨论】:

    标签: c# sockets windows-runtime microsoft-metro


    【解决方案1】:

    查看StreamSocket 示例。

    在调试应用时,Visual Studio 会自动创建一个loopback exemption 来测试从 WinRT 客户端 (StreamSocket) 到本地服务器的连接。

    豁免不适用于从本地客户端到 WinRT 服务器 (StreamSocketListener) 的其他方式。您需要在另一台机器上运行服务器。

    另外,如果您使用的是SreamSocketListener,则需要internetClientServer capability

    如果您的服务器在本地网络中的另一台机器上运行,您需要privateNetworkClientServer capability

    【讨论】:

    • 谢谢你,我通过将两个单独的应用程序(服务器和客户端)放在一个单独的应用程序中来“修复”它并解决了它。
    猜你喜欢
    • 1970-01-01
    • 2016-02-10
    • 2015-03-26
    • 1970-01-01
    • 2016-04-26
    • 2016-04-15
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    相关资源
    最近更新 更多