Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何选择向其发送响应的端口_C++_Boost Asio_Modbus Tcp - Fatal编程技术网

C++ 如何选择向其发送响应的端口

C++ 如何选择向其发送响应的端口,c++,boost-asio,modbus-tcp,C++,Boost Asio,Modbus Tcp,我目前正尝试使用Modbus/TCP与PLC通信,但即使我可以读取PLC发送的Modbus帧,我也必须将Modbus响应发送到端口502,并将我使用的流发送到PLC发送帧所使用的端口。我尝试使用两个流进行接收和发送,但当我关闭第一个流时,PLC将其视为超时通信,然后拒绝第二个连接。 如果它能帮助你,这里是我使用的代码,但目前它只允许我测试连接 #define _WIN32_WINNT 0x0501 #include <iostream> #include <boost/asi

我目前正尝试使用Modbus/TCP与PLC通信,但即使我可以读取PLC发送的Modbus帧,我也必须将Modbus响应发送到端口502,并将我使用的流发送到PLC发送帧所使用的端口。我尝试使用两个流进行接收和发送,但当我关闭第一个流时,PLC将其视为超时通信,然后拒绝第二个连接。 如果它能帮助你,这里是我使用的代码,但目前它只允许我测试连接

#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;
    }
}
#定义_WIN32_WINNT 0x0501
#包括
#包括
#包括
#包括
使用名称空间std;
使用boost::asio::ip::tcp;
int main()
{
boost::asio::io_服务io_服务;
tcp::endpoint(tcp::v4(),502);
tcp::acceptor-acceptor(io_服务,端点);
而(1)
{
int i=0;
琴弦浅黄色;
char-buf[30];
tcp::iostream流;
tcp::iostreams(“192.168.10.150”、“502”);
acceptor.accept(*stream.rdbuf());
getline(流,buff);

cout“我必须回答端口502”。TCP不是这样工作的。您需要仔细阅读您必须实现的协议的描述,并按照文档的文字来实现它。“将响应发送到端口502”太模糊,没有用处。“TCP不是这样工作的”这是真的,但我的问题是Modbus/TCP协议,如果我必须以标准PC对PC的方式使用它,那就好了,但是PLC不会在它用来发送Modbus帧的同一端口上侦听,如果我没有弄错的话,服务器和客户端(主/从)只侦听这个端口