network.lib > BECKHOFF

IP-Control DNS-Lookup melden Fehler 1797

(1/1)

FriedrichMiller:
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.

FriedrichMiller:
Hallo,

habe das Problem gefunden!
Bei der DNS-abfrage ist die UDP-antwort 512 Bytes groß!

Alter Code im IP-CONTROL zeile 247bis 260

--- Code: --- 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;

--- Ende Code ---

Workaround:

--- Code: --- 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;

--- Ende Code ---


Viel Erfolg!

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln