Как выбрать порт, на который я отправляю ответ

В настоящее время я пытаюсь связаться с ПЛК с помощью Modbus / TCP, но даже подумал, что могу прочитать кадр Modbus, отправленный ПЛК, я должен дать ответ Modbus на порт 502 и поток, который я использую, отправить на порт, используемый ПЛК для отправить кадр. Я попытался использовать два потока для получения и отправки, но когда я закрываю первый, ПЛК получает это как тайм-аут связи, а затем отказывается от второго соединения.
Если это может помочь вам, вот код, который я использую, но пока он делает только что-то, кроме того, что позволяет мне проверить соединение.

#define _WIN32_WINNT 0x0501

#include <iostream>
#include <boost/asio.hpp>
#include <boost/system/config.hpp>
#include <string>

using namespace std;
using boost::asio::ip::tcp;int main()
{
boost::asio::io_service io_service;

tcp::endpoint endpoint(tcp::v4(), 502);
tcp::acceptor acceptor(io_service, endpoint);

while (1)
{
int i =0;
string buff;
char buf[30];
tcp::iostream stream;
tcp::iostream s("192.168.10.150", "502");
acceptor.accept(*stream.rdbuf());
getline(stream, buff);
cout<<buff<<endl;
s <<buff;
}
}

Если у вас есть предложения.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]