电脑通过网口连接三菱PLC,可以ping的通,但用以下代码就一直报10061的错误:
int main()
{
// initialize winsock
WORD wVer = MAKEWORD(1, 1); // version NO:1.1, #include <WINSOCK.H>
WSADATA wData;
int err = WSAStartup(wVer, &wData);
if (err)
{
printf("cannot initialize WinSock\n");
return 1;
}
// 建立SOCKET通信
SOCKET s = 0;
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(1); // ASA standard port
server.sin_addr.s_addr = inet_addr("192.168.3.250");
// 建立CONNECT连接
int i = connect(s, (sockaddr *)&server, sizeof(sockaddr_in));
if (i < 0) // #define SOCKET_ERROR (-1)
{
printf("connect - error %d\n", WSAGetLastError());
closesocket(s);
WSACleanup();
return 1;
}
return 0;
}
运行到connect指令就会返回10061的错误码,在cmd里ping 192.168.3.250是没问题的,但是htons( )里的端口号我不能确定,也不知道三菱PLC有没有默认的端口号,试了很多,除了给0会报10049的错误外,其它都是报10061。
麻烦那位大神帮忙看一下,头大,试了一天了
1、建议你下载一个网络调试助手,在PC端运行;
2、规划好PLC和PC, 谁做Server谁做Client;
3、先把PLC侧程序做好;PC侧用网络调试助手;
4、然后开发PC侧程序。
即PLC侧也需要编程的。
10061 —WSAECONNREFUSED
连接被拒。由于被目标机器拒绝,连接无法建立。这通常是由于在远程机器上,没有任何应用程序可在那个地址之上,为连接提供服务