udp连接硬件设备
我用UDP接收一个工控设备发来的字符串,却怎么也接不到,厂家提供了一个C++原程序,可以跑通,怎么转成DELPHI就不行呢
很简单的一个例子:
放一个UDPCLIENT控件,设置HOST:='19.112.119.93' PORT:=5555
然后SEND('*OPT?'),
再用IdUDPClient1.ReceiveString 取数据,总是报错说连接不上
错误提示代码是“socket error 10054 connect reset by peer.....”
补助说明:
1)远程IP,和PORT都是正确的,因为用厂商的源代码C++可以运行
2)我用软件模拟(在两台电脑上测试,一台当服务器,一台当客户端都能运行,)可是一连接到真正的硬件设备就说连不上远程主机,搞了一个礼拜了,
3)本机上没装杀毒软件,自带的防火墙也是关闭的
4)以下是厂商提供的部分源代码
...........socket初始化..定义..(略)
char cBuffer[BUFFER_SIZE];
sprintf(cBuffer, "*OPT?\n");
MySend(sock, cBuffer);
recv(sock, cBuffer, sizeof(cBuffer),0);
if (strstr(cBuffer,"DS") != NULL) {
isDS = true;
}
...........
5)本人程序部分代码
....
UDPClient.Active:=false;
UDPClient.Host:='19.112.119.93';
UDPClient.port:=5555;
UDPClient.Active:=true;
....
UDPClient.send( '*OPT?');
s:=receivestring(-2);
if pos('DS',s)>0 then
isDS := true;
.....
6)用端口查看器跟踪,执行本程序后会随机分配一个端口如1951,然后执行UDPClient初始化,会有一个程序定义的端口5555,执行数据send后又会多一个端口1952,,这个有什么参考价值吗?
请做多udp直接连接硬件设备的同仁指点一下