TCP Reconnection

sadik

Level-1
Beiträge
30
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ich verbinde mich mit meiner Serveranbindung beim start der Steuerung erfolgreich und kann Daten über TCP empfangen
folgender Aufbau habe ich:

tcpClient.ptSendData := ADR(sendBuffer.data);
tcpClient.diSendCount := sendBuffer.iPos;


tcpClient(xOpenConnection:=TRUE,
xStartSend:=xStartSend,
aReceiveBuffer := receiveBuffer.data,
diReceiveCount := diReceiveCount);


xTcpConnected := tcpClient.xConnected;


IF NOT xTcpConnected THEN
eState := NOT_CONNECTED;
xConnected := FALSE;
RETURN;
END_IF

CONNECTED:
...


NOT_CONNECTED:
... Aufbau der Verbindung...

WAIT_RESPONSE:
IF incomingMessageType = SHL(OK, 4) THEN
xConnected := TRUE;
eState := CONNECTED;

Der Init Vorgang: not_connected -> wait_response -> connected
Das Problem ist wenn mein Server neustartet wird keine erneute verbindung gestartet.
Wie kann ich die Verbindung reseten ?
Ich verwende WagoLibEthernet_01.lib

Die Wireshark Analyse liefert:
Server -> Client Port: 1884 -> 35784
Client -> Server Port: 35784 -> 1884
bisher ok
dann beim runterfahren und erneutem starten des servers kommt der folgende ausgabe rot hinterlegt bei wireshark:
Server-Client : Port 1883 -> 35784
Server-Client : Port 1883 -> 35785
Server-Client : Port 1883 -> 35786
Server-Client : Port 1883 -> 35787

Der Server versucht alle Ports für die Wago Client aus bekommt aber keine Connection.

Ich bekomme die Fehlermedlung in der TCP-Baustein: SysSockConnect() fails 16#8006
 
Zuletzt bearbeitet:
Hallo sadik,

in der Statemachine kann der Verbindungsstatus mit dem Ausgang diError bzw. xConnected überwacht werden.
Wurde die Verbindung getrennt, kann in diesem Fall durch Rücksetzen und Setzen des Bits xOpenConnection die Verbindung neu aufgebaut werden.

Was sich hier ein wenig komisch anhört, ist dass der Server die Verbindung aufbaut.
Es ist wahrscheinlicher, dass der Client die Verbindung aufbaut.

Im Wireshark sollte der Verbindungsaufbau zu sehen sein:
Client an Server: SYN
Server an Client: SYN, ACK
Client an Server: ACK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Das Problem ist, die Verbindung ist wider erfolgreich wenn der Server innerhalb ca 3-4 sek. wieder steht.
Über diesen Bereich liegt am diErrror field der Wert 16#8006 => SysSockConnect() fails .
 
Hallo

Das Problem ist, die Verbindung ist wider erfolgreich wenn der Server innerhalb ca 3-4 sek. wieder steht.
Über diesen Bereich liegt am diErrror field der Wert 16#8006 => SysSockConnect() fails .
 
Zurück
Oben