| Operatoren |
open_socket_accept — Öffnen eines Sockets, der Verbindungsanfragen zulässt.
open_socket_accept( : : Port, GenParamName, GenParamValue : AcceptingSocket)
open_socket_accept öffnet einen Socket, der ankommende Verbindungsanfragen akzeptiert. Dieser Operator ist der notwendige erste Schritt, um einen Kommunikationskanal zwischen zwei HALCON-Prozessen aufzubauen. Der Socket horcht nach ankommenden Verbindungsanfragen auf dem durch Port bestimmten Port.
Mit dem Parameter 'protocol' kann das verwendete Kommunikationsprotokoll spezifiziert werden. Voreingestellt ist das 'HALCON' Protokoll ohne festgelegte Adressfamilie. Somit wird entsprechend den aktuellen Netzwerkeinstellungen des Rechners entweder IPv4 oder IPv6 automatisch verwendet. Um eine bestimmte Adressfamilie auszuwählen, muss eine '4' für IPv4 bzw. eine '6' für IPv6 an den Namen des Protokolls angehängt werden. Z.B. bezeichnet 'HALCON4' eine HALCON Verbindung über IPv4. Mögliche Werte für eine generische Socketkommunikation sind 'UDP' und 'TCP'. Auch hier kann eine '4' oder '6' angehängt werden. Beide Kommunikationspartner müssen dasselbe Protokoll verwenden. Der Datenaustausch über generische Sockets erfolgt ausschließlich mit send_data und receive_data.
Mit dem generischen Parameter 'address' kann das Socket angewiesen werden, nur Verbindungen zu akzeptieren, die an eine bestimme Adresse gerichtet sind. So würde der Wert 'localhost' das Socket anweisen, nur Verbindungen zu akzeptieren, die an die Netzwerkaddresse 'localhost' gerichtet sind, welche normalerweise der lokalen Loopback-Schnittstelle '127.0.0.1' entspricht.
Mit dem generischen Parameter 'timeout' kann ein Timeout für diesen Socket angegeben werden. Er wird in der Einheit Sekunden oder als Zeichenkette 'infinite' angegeben und ist im Besonderen dazu bestimmt, den Timeout und Wartemodus für einen folgenden socket_accept_connect Operatoraufruf, bei dem der Parameter Wait auf 'auto' gesetzt ist, zu setzen.
Mit dem generischen Parameter 'reuseaddr' kann die Einstellung der Socket Option SO_REUSEADDR kontrolliert werden. Der Standardwert ist 'true'. Hat 'reuseaddr' den Wert 'false', so wird SO_REUSEADDR nicht gesetzt. Auf Windows Systemen werden konkurrierende Zugriffe auf einem einzelnen Anschluss nur detektiert, wenn 'reuseaddr' auf den Wert 'false' gesetzt ist.
Der akzeptierende Socket wird in AcceptingSocket zurückgegeben. open_socket_accept kehrt sofort zurück, ohne auf eine Verbindungsanfrage eines anderen Prozesses zu warten, die durch den Aufruf von open_socket_connect eingeleitet wird. Dies ermöglicht es mehreren Prozessen mit dem Prozess, der open_socket_accept aufruft, eine Verbindung herzustellen. Um eine ankommende 'HALCON' oder 'TCP' Verbindungsanfrage zu akzeptieren, muss socket_accept_connect aufgerufen werden, so dass ein Socket für die eigentliche Kommunikation zur Verfügung steht.
Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.
Nummer des Ports.
Defaultwert: 3000
Wertevorschläge: 3000, 4570
Typischer Wertebereich: 1024 ≤ Port ≤ 65535
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Namen der generischen Parameter, die für die Socket-Verbindung eingestellt werden sollen.
Defaultwert: []
Werteliste: 'address', 'protocol', 'timeout'
Werte der generischen Parameter, die für die Socket-Verbindung eingestellt werden sollen.
Defaultwert: []
Wertevorschläge: 0, 3.0, 'infinite', 'HALCON', 'UDP', 'TCP', 'HALCON4', 'UDP4', 'TCP4', 'HALCON6', 'UDP6', 'TCP6'
Nummer des Sockets.
* Process 1
dev_set_colored (12)
open_socket_accept (3000, [], [], AcceptingSocket)
* Busy wait for an incoming connection
dev_error_var (Error, 1)
dev_set_check ('~give_error')
OpenStatus := 5
while (OpenStatus != 2)
socket_accept_connect (AcceptingSocket, 'false', Socket)
OpenStatus := Error
wait_seconds (0.2)
endwhile
dev_set_check ('give_error')
* Connection established
receive_image (Image, Socket)
threshold (Image, Region, 0, 63)
send_region (Region, Socket)
receive_region (ConnectedRegions, Socket)
area_center (ConnectedRegions, Area, Row, Column)
send_tuple (Socket, Area)
send_tuple (Socket, Row)
send_tuple (Socket, Column)
close_socket (Socket)
close_socket (AcceptingSocket)
* Process 2
dev_set_colored (12)
open_socket_connect ('localhost', 3000, [], [], Socket)
read_image (Image, 'fabrik')
send_image (Image, Socket)
receive_region (Region, Socket)
connection (Region, ConnectedRegions)
send_region (ConnectedRegions, Socket)
receive_tuple (Socket, Area)
receive_tuple (Socket, Row)
receive_tuple (Socket, Column)
close_socket (Socket)
open_socket_connect, close_socket, get_socket_param, set_socket_param, send_image, receive_image, send_region, receive_region, send_tuple, receive_tuple, send_data, receive_data
Foundation
| Operatoren |