Hallo zusammen,
habe derzeit ein Problem beim DNS-Lookup.
Domain DNS-Server ect. alles per Windows erreichbar. (ping www.domain.de bekomme ich eine Antwort).
Habe schon den DNS-Client und IP-Control auf Version 1.35 geupdatet, genau so den Beckhoff TCP/IP Server auf 3.1.6.
Sobald ich eine DNS-Abfrage starte dauert es ein bisschen und der fbReceiveFrom Baustein meldet Fehler 1797: Parametergröße nicht korrekt.
Bestehen derzeit Probleme oder ist was bekannt?
Vielen Dank.
Hallo,
habe das Problem gefunden!
Bei der DNS-abfrage ist die UDP-antwort 512 Bytes groß!
Alter Code im IP-CONTROL zeile 247bis 260
r_offset := SEL(udp_mode,UINT_TO_INT(R_BUF.SIZE),0);
r_count := r_max_size - r_offset;
bytes_received := 0;
IF udp_mode THEN
fbReceiveFrom(bExecute := FALSE );
fbReceiveFrom(bExecute:= TRUE, sSrvNetId := sSrvNetId, hSocket:= socket, cbLen := r_count, pDest:= ADR(R_BUF.BUFFER), tTimeout:= TIME_OUT);
fbReceiveFrom.bExecute := FALSE; (* Vorbelegung *)
ELSE
fbReceive(bExecute:= FALSE);
fbReceive(bExecute:= TRUE, sSrvNetId := sSrvNetId , hSocket:= socket , cbLen:= r_count, pDest:= ADR(R_BUF.BUFFER[r_offset]) , tTimeout:= TIME_OUT);
fbReceive.bExecute:= FALSE;
END_IF;
Workaround:
r_offset := SEL(udp_mode,UINT_TO_INT(R_BUF.SIZE),0);
r_count := r_max_size - r_offset;
bytes_received := 0;
IF udp_mode THEN
IF IP_C.C_PORT = 53 THEN
r_count := 512;
END_IF;
fbReceiveFrom(bExecute := FALSE );
fbReceiveFrom(bExecute:= TRUE, sSrvNetId := sSrvNetId, hSocket:= socket, cbLen := r_count, pDest:= ADR(R_BUF.BUFFER), tTimeout:= TIME_OUT);
fbReceiveFrom.bExecute := FALSE; (* Vorbelegung *)
ELSE
fbReceive(bExecute:= FALSE);
fbReceive(bExecute:= TRUE, sSrvNetId := sSrvNetId , hSocket:= socket , cbLen:= r_count, pDest:= ADR(R_BUF.BUFFER[r_offset]) , tTimeout:= TIME_OUT);
fbReceive.bExecute:= FALSE;
END_IF;
Viel Erfolg!