微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

关于PLC跟PC通过TCP协议通信谁是server谁是client的问

时间:2017-01-16 04:01  浏览:努力统计中...
现要实现PC机跟松下PLC通过TCP协议通信,双方要互发信息,不知道谁是服务端,谁是客户端? 这个 有点急。谢谢 谁是server是谁client这个看对方吧 如果对方是client,那pc做server,你就要

现要实现PC机跟松下PLC通过TCP协议通信,双方要互发信息,不知道谁是服务端,谁是客户端?


这个 有点急。谢谢


谁是server是谁client这个看对方吧
如果对方是client,那pc做server,你就要告知对方你的ip和port方便对方连入

是啊,没有明确的规定,是s是c,只能你们自己协商定义了

妖哥在不,现在我写的client,但是PLC那面说他写的也是client,通信失败,我就蒙了。不知道怎么回事,

因为之前在论坛里看到说PC做client,照做了,自己做了server模拟成功,但是今天跟PLC通信时
ClientSocket->Active = true;这句不成功。

另外对方也不知道他是c还是s,她说是s,但是他却不需要知道我的IP,不知道我俩谁搞错了。


这个要看说明书了,如果两边都是自己编的话,那就要自己决定。


那你的意思是双方互发信息,谁c谁s都可以了?


是的都可以
client端可以向server发消息,同样的server端也可以给client发消息
哦,谢谢哈!
我是win平台

只是PLC我不懂,貌似对方也不知道他是C是S(⊙﹏⊙b汗),
就是连接不成功。

对了,我现在用BCB封装的ClientSocket,用的非阻塞,这个有关系吗,PLC那面貌似没有这个概念


松下的PLC
我完全按照说明书的例程写的


C/C++ code

设备那边是client 如果使用TCP协议 想要通信你这边(PC端)只能做server
if((sno = socket(AF_INET, SOCK_STREAM, 0)) > 0) return ERROR;

到这句就返回了


还是不行

额,没人理我。可是我又有新的问题了,
C/C++ code

我下午在提出质疑的时候就感觉到了,呵呵
if((err = connec(sno, (struct sockaddr*)&DstAddr, sizeof(DstAddr))) < 0) close(sno);

GetLastError返回10049,不知道怎么回事


10049错误一般是参数有问题。比如对方的IP,确定有效么?

因为是松下的PLC,他也没用过。
现在能ping通,但是到这里出问题
C/C++ code
if((err = connect(sno, (struct sockaddr*)&DstAddr, sizeof(DstAddr))) < 0) close(sno);long lerror = GetLastError();//lerror = 10049if(connect)perror("connect error");
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------