IF start THEN
IF HandleSocket<0 THEN
HandleSocket:=SysSockCreate(SOCKET_AF_INET, SOCKET_DGRAM, 0);
bOption:=TRUE;
(*SysSockSetOption(diSocket, SOCKET_SOL, SOCKET_SO_BROADCAST, ADR(bOption), SIZEOF(bOption));*)
sa.sin_family:=SOCKET_AF_INET;
sa.sin_addr:=SOCKET_INADDR_ANY;
sa.sin_port:=SysSockHtons(iPort);
bResult:=SysSockBind(HandleSocket, ADR(sa), SIZEOF(sa));
IF bResult = FALSE THEN
diSocket:=SOCKET_INVALID;
END_IF
ELSE
sa.sin_family:=SOCKET_AF_INET;
(*IF stIPAddress <> '' THEN sa.sin_addr:=GetIPAddress(stIPAddress);
ELSE*)
sa.sin_addr:=SOCKET_INADDR_BROADCAST;
(*END_IF*)
sa.sin_port:=SysSockHtons(iPort);
numberofbyte:=SysSockSendTo(HandleSocket, ADR(MessageToPC), SIZEOF(MessageToPC), 0, ADR(sa), SIZEOF(sa));
IF numberOfByte>0 AND marker=0 THEN
marker := numberofByte;
SysSockClose(HandleSocket);
END_IF
IF numberOfByte>0 THEN
marker := numberofByte;
SysSockClose(HandleSocket);
END_IF
END_IF
ELSE
IF HandleSocket<>SOCKET_INVALID THEN
SysSockClose(HandleSocket);
HandleSocket:=SOCKET_INVALID;
MessageFromPC:=Zero;
END_IF
END_IF