2015-08-24 2 views
1

Так что я довольно новичок в программировании и решил попробовать некоторые сети, но я застрял. Я попытался создать простой клиент и сервер, чтобы установить соединение. Очевидно, что это не работает, и я огляделся, но не могу найти новую информацию, чтобы помочь мне. Поэтому я решил попробовать здесь.Windows 8.1 StreamSocketListener C#

Вот что происходит, когда я запускаю клиента и сервера:

(я бегу клиент и сервер на том же компьютере)

* Клиент подключается к серверу (локальный):

-System.Exception: попытка подключения завершилась неудачно, потому что связанная сторона не ответила должным образом через какое-то время или не удалось установить соединение, потому что подключенный хост не смог ответить.

* Клиент подключается к серверу, когда сервер не работает:

-System.Exception: Подключение не может быть сделано, потому что целевая машина активно отказалась от него.

* Клиент подключается к порту на локальный 80 (который не является сервер):

-Подключения создан

* Клиент подключения к HostName 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(). Вам нужно будет запустить сервер на другом компьютере.

Также, если вы используете SreamSocketListener, вам нужен internetClientServer capability.

Если ваш сервер работает на другом компьютере в локальной сети, вам нужен privateNetworkClientServer capability.

+0

Спасибо, я «исправил» его, поставив оба отдельных приложения (сервер и клиент) в один и решил. –

Смежные вопросы