s7-1200 udp通讯,udp 通讯 内网
udpsoket=socket(af _ inet、SOCK_DGRAM、ippo rot _ UDP);
if(invalid _ socket==UDP socket)}
关闭的票证(UDP soket);
wsacleanup();
返回0;
*接收超时
iero code=setsockopt(udpsoket,SOL_SOCKET,SO_RCVTIMEO,(const char *)nnectameout,sizeof(int));
if(socket _ error==iero code)}
关闭的票证(UDP soket);
wsacleanup();
返回0;
*绑定到自己的端口
recvaddr。sin _ family=af _ inet:
recddr。sin _ port=hten(4000);
重复,sin_addr .S_un。不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不S7-1200可编程控制器:
iAddrLen=sizeof(重复ddr):
iero code=bind(UDP soket)(sockaddr *)recddr,iaddrlen);
*设置要发送的互联网协议(Internet Protocol)地址地址及端口号
*备注:如果在同一台机器上做测试时,自己的端口与服务器的端口不可以重复;
*如果重复会有一段打开端口失败。
sendaddr。sin _ family=af _ inet:
sendaddr。sin _ port=hten(4000);
SendAddr.sin_addr(发送者:sin_addr).S_un。不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不s _ addr=inet _ addr( 172。16 .0 .193 );
*发送请求,传入带有对方的地址信息的结构体
iercode=send to(UDP soket,szBuffer,strlen(SZ buffer)1.0,(SOCKADDR*) SendAddr,sizeof(SendAddr));
if(socket _ error==iero code)}
关闭的票证(UDP soket);
wsacleanup();
返回0;
*接收请求,传入带有本地端口信息的结构体
iero code=recvfrom(udpsoket,szBuffer,100.0,(sockaddr *)recddr,iaddrlen);
if(socket _ error==iero code)}
关闭的票证(UDP soket);
wsacleanup();
返回0;
printf(szBuffer):
getchar();
关闭的票证(UDP soket);
wsacleanup();
返回0;
}