Я пробовал несколько примеров ZMQ на C++
, C#
и Python
.Я пытаюсь использовать шаблон Request-Reply
для подключения устройства Android к ПК, работающему с UWP
с Xamarin forms
.
Ниже приведен код Requestor
:
public void HelloWorld()
{
var timer = new Timer(60000);
timer.Start();
timer.Elapsed += (sender, args) =>
{
this.Cancel = true;
timer.Stop();
};
// Create
const string endpoint = "tcp://PC_ip:3245";
using (var request = new RequestSocket())
{
request.Bind(endpoint);
Thread.Sleep(2000);
while (!Cancel)
{
request.SendFrame("Requester says hello");
var reply = request.ReceiveFrameString();
Debug.WriteLine("Gets reply {0}",reply);
}
}
}
Код сокета ответа:
public void HelloWorld()
{
var timer = new Timer(60000);
const string endpoint = "tcp://PC_ip:3245";
timer.Start();
timer.Elapsed += (sender, args) =>
{
timer.Stop();
Cancel = true;
};
using (var replierSocket = new ResponseSocket())
{
replierSocket.Connect(endpoint);
Thread.Sleep(2000);
while (!Cancel)
{
var replyFromRequester = replierSocket.ReceiveFrameString();
Debug.WriteLine("Got reply {0}", replyFromRequester);
replierSocket.SendFrame("Response socket say hello");
}
}
}
Cancel
- логическое значение
Я просмотрел несколько вопросов об этом и добавил задержку, и эти блоки кода подключения срабатывают только после нажатия кнопки в приложении.
Во время отладки request.ReceiveFrameString()
replierSocket.ReceiveFrameString();
даже не срабатывает.
Я новичок в сетевом программировании, я понимаю, что для шаблона REQ / REP код должен быть в определенном порядке, который я отслеживал и исправлял.поверьте и отключите брандмауэр на моем ПК, чтобы брандмауэр не блокировал мои входящие подключения с устройства Android.
PC_ip обозначает IPv4-адрес, который я получил от ipconfig / all для моего wifi.Я также попробовал внешний ip своей машины с таких сайтов, как whatsmyip.org на ResponseSocket
, но я все еще не получаю ответ между устройствами.
Пожалуйста, дайте мне знать, что я делаю неправильно.
Репозиторий проблем с репликацией: GitHub / me / XamZeroMq