Здравствуйте. Я пытался создать две программы (серверную и клиентскую) на одной машине.Я сделал это с WPF, а затем попытался сделать это с UWP, но мне это не удалось.Проблема в том, что слушатель на сервере ожидает соединения, но оно никогда не приходит.Это происходит только тогда, когда я пытаюсь установить соединение из двух отдельных проектов.Если я делаю это в одном проекте, все работает нормально.Я где-то видел, что невозможно запустить сервер и клиент с одной машины с UWP, но информация была не так хорошо объяснена.Поэтому мой вопрос: возможно ли сделать два отдельных проекта с помощью UWP для сервера и клиента на одном компьютере, и если нет, то как я могу протестировать программы (нужен ли мне другой компьютер для тестирования или есть какой-то другой способ сделать это).
А может кто-нибудь сказать мне, есть ли возможный способ опубликовать мой проект, такой как опция из Консольных приложений, чтобы я мог отправить своего клиента на другой компьютер, а затем попробовать.Все, что я мог найти в Интернете, - это как опубликовать ваши Приложения в Магазине Microsoft.
Сервер
public sealed partial class MainPage : Page
{
string port = "11000";
string hostv4 = "127.0.0.1";
StreamSocketListener server;
public MainPage()
{
InitializeComponent();
StartServer();
}
private async void StartServer()
{
HostName name = new HostName(hostv4);
server = new StreamSocketListener();
server.ConnectionReceived += this.Receive;
await server.BindEndpointAsync(name, port);
Chat.Content += ("server is listening...\n");//chat is a ScrollViewer where I show the received messsges
}
private async void Receive(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
{
string receivedMsg;
using (var sr = new StreamReader(args.Socket.InputStream.AsStreamForRead()))
{
receivedMsg = await sr.ReadLineAsync();
}
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => Chat.Content += (string.Format("server received the request: \"{0}\"\n", receivedMsg)));
}
}
Клиент
public sealed partial class MainPage : Page
{
string port = "11000";
string hostv4 = "127.0.0.1";
StreamSocket client;
public MainPage()
{
this.InitializeComponent();
Connect();
}
private async void Connect()
{
client = new StreamSocket();
HostName name = new HostName(hostv4);
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => Chat.Content += (string.Format("client trying to connect...\n")));
await client.ConnectAsync(name, port);
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => Chat.Content += (string.Format("client connected\n")));
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
string request = Input.Text; //Input is the name of my TextBox
using (Stream outputStream = client.OutputStream.AsStreamForWrite())
{
using (var sw = new StreamWriter(outputStream))
{
await sw.WriteLineAsync(request);
await sw.FlushAsync();
}
}
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => Chat.Content += (string.Format("client sent request: {0}\n", request)));
}
Я также включил Интернет (Клиент и Сервер) и Частные сети (Клиент и Сервер) из Возможностей