blackedding
Level-1
- Beiträge
- 5
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Hallo,
Ich beschäftige mich derzeit mit einer TCP-Verbindung zwischen Festo CPX-Steuerungen. Dabei bin ich auf 3 unterschiedliche Methoden der Socket-Übertragung gestoßen (CoDeSys):
Die 2. Möglichkeit habe ich integriert, das läuft soweit auch gut.
Meine Frage wäre, ob jemand hier bereits Erfahrungen mit der 1. Möglichkeit gemacht hat.
Meine Erfahrungen:
Bei der Verwendung von select blockiert die Funktion accept nicht:
Beim anschließenden Empfangen jedoch blockiert die Funktion receive:
Vielleicht habt ihr noch weitere Tipps im Umgang mit Sockets und TCP-Verbindungen in CoDeSys.
Vielen Dank an alle!
Ich beschäftige mich derzeit mit einer TCP-Verbindung zwischen Festo CPX-Steuerungen. Dabei bin ich auf 3 unterschiedliche Methoden der Socket-Übertragung gestoßen (CoDeSys):
- synchron (blocking)
- Funktionen, wie z. B. accept, send, receive, blockieren.
- Das Programm bleibt bei der blockierenden Funktion stehen.
- über select
- non-blocking
- Socket wird mit ioctl auf non-blocking gesetzt.
- "Fehlermeldung" wouldblock, wenn blockierende Funktionen blockieren würden
- Programm läuft dann weiter
- asynchron
- speziell in der Win32-Entwicklung
- arbeitet mit Events
- http://www.win32developer.com/tutorial.shtm
Die 2. Möglichkeit habe ich integriert, das läuft soweit auch gut.
Meine Frage wäre, ob jemand hier bereits Erfahrungen mit der 1. Möglichkeit gemacht hat.
Meine Erfahrungen:
Bei der Verwendung von select blockiert die Funktion accept nicht:
Code:
sockaddr_size := SIZEOF(sockaddr);
IF SysSockSelect(SOCKET_FD_SETSIZE, ADR(fdRead), 0, 0, ADR(tvTimeout)) > 0 THEN
socket := SysSockAccept(server_socket, ADR(sockaddr), ADR(sockaddr_size));
END_IF
Code:
IF SysSockSelect(SOCKET_FD_SETSIZE, ADR(fdRead), 0, 0, ADR(tvTimeout)) > 0 THEN
TcpReceiveData:= SysSockRecv(socket, ADR(abyRecv), SIZEOF(abyRecv), 0); (* Returns 0 if gracefully closed or -1 for an error*)
END_IF
Vielleicht habt ihr noch weitere Tipps im Umgang mit Sockets und TCP-Verbindungen in CoDeSys.
Vielen Dank an alle!