open_socket_acceptT_open_socket_acceptOpenSocketAcceptOpenSocketAcceptopen_socket_accept (Operator)
Name
open_socket_acceptT_open_socket_acceptOpenSocketAcceptOpenSocketAcceptopen_socket_accept — Öffnen eines Sockets, der Verbindungsanfragen zulässt.
Signatur
void OpenSocketAccept(const HTuple& Port, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* AcceptingSocket)
void HSocket::HSocket(Hlong Port, const HTuple& GenParamName, const HTuple& GenParamValue)
void HSocket::HSocket(Hlong Port, const HString& GenParamName, const HString& GenParamValue)
void HSocket::HSocket(Hlong Port, const char* GenParamName, const char* GenParamValue)
void HSocket::HSocket(Hlong Port, const wchar_t* GenParamName, const wchar_t* GenParamValue)
(
Nur Windows)
void HSocket::OpenSocketAccept(Hlong Port, const HTuple& GenParamName, const HTuple& GenParamValue)
void HSocket::OpenSocketAccept(Hlong Port, const HString& GenParamName, const HString& GenParamValue)
void HSocket::OpenSocketAccept(Hlong Port, const char* GenParamName, const char* GenParamValue)
void HSocket::OpenSocketAccept(Hlong Port, const wchar_t* GenParamName, const wchar_t* GenParamValue)
(
Nur Windows)
static void HOperatorSet.OpenSocketAccept(HTuple port, HTuple genParamName, HTuple genParamValue, out HTuple acceptingSocket)
public HSocket(int port, HTuple genParamName, HTuple genParamValue)
public HSocket(int port, string genParamName, string genParamValue)
void HSocket.OpenSocketAccept(int port, HTuple genParamName, HTuple genParamValue)
void HSocket.OpenSocketAccept(int port, string genParamName, string genParamValue)
Beschreibung
open_socket_acceptopen_socket_acceptOpenSocketAcceptOpenSocketAcceptOpenSocketAcceptopen_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
PortPortPortPortportport bestimmten Port.
Als PortPortPortPortportport kann auch der Wert 0 angegeben werden. Die genauen
Auswirkungen sind implementierungsspezifisch. Bei den meisten
Betriebssystemen bedeutet eine 0, dass das Betriebssystem eine freie
Portnummer selber per Zufall bestimmen soll.
Die folgenden Parameter können für GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name gesetzt werden.
- 'protocol'"protocol""protocol""protocol""protocol""protocol":
-
Spezifiziert das zu verwendende Kommunikationsprotokoll.
Das 'HALCON'"HALCON""HALCON""HALCON""HALCON""HALCON" Protokoll ohne festgelegte
Adressfamilie, verwendet entsprechend den aktuellen Netzwerkeinstellungen
des Rechners entweder IPv4 oder IPv6 automatisch. 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'"HALCON4""HALCON4""HALCON4""HALCON4""HALCON4" eine HALCON Verbindung über IPv4. Mögliche Werte
für eine generische Socketkommunikation sind 'UDP'"UDP""UDP""UDP""UDP""UDP" und
'TCP'"TCP""TCP""TCP""TCP""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_datasend_dataSendDataSendDataSendDatasend_data und receive_datareceive_dataReceiveDataReceiveDataReceiveDatareceive_data.
Default:
'HALCON'"HALCON""HALCON""HALCON""HALCON""HALCON"
- 'address'"address""address""address""address""address":
-
Weist das Socket an, nur Verbindungen zu akzeptieren, die an eine bestimme
Adresse gerichtet sind. So würde der Wert 'localhost'"localhost""localhost""localhost""localhost""localhost" das
Socket anweisen, nur Verbindungen zu akzeptieren, die an die
Netzwerkadresse 'localhost'"localhost""localhost""localhost""localhost""localhost" gerichtet sind, welche normalerweise
der lokalen Loopback-Schnittstelle '127.0.0.1'"127.0.0.1""127.0.0.1""127.0.0.1""127.0.0.1""127.0.0.1" entspricht.
- 'timeout'"timeout""timeout""timeout""timeout""timeout":
-
Setzt ein Timeout für diesen Socket. Er wird in der Einheit Sekunden oder
als Zeichenkette 'infinite'"infinite""infinite""infinite""infinite""infinite" angegeben und ist im Besonderen dazu
bestimmt, den Timeout und Wartemodus für einen folgenden
socket_accept_connectsocket_accept_connectSocketAcceptConnectSocketAcceptConnectSocketAcceptConnectsocket_accept_connect Operatoraufruf, bei dem
der Parameter WaitWaitWaitWaitwaitwait auf 'auto'"auto""auto""auto""auto""auto" gesetzt ist, zu setzen.
- 'string_encoding'"string_encoding""string_encoding""string_encoding""string_encoding""string_encoding":
-
Setzt die Kodierung für das Senden und Empfangen von Zeichenketten.
Die Kodierung wird für send_tuplesend_tupleSendTupleSendTupleSendTuplesend_tuple, receive_tuplereceive_tupleReceiveTupleReceiveTupleReceiveTuplereceive_tuple,
send_datasend_dataSendDataSendDataSendDatasend_data und receive_datareceive_dataReceiveDataReceiveDataReceiveDatareceive_data verwendet. Wenn das
Kommunikationsprotokoll 'HALCON'"HALCON""HALCON""HALCON""HALCON""HALCON" verwendet wird, hat diese
Einstellung nur Auswirkungen auf Verbindungen mit HALCON Versionen
vor 18.11. Wenn der Kommunikationspartner eine HALCON Version 18.11
oder neuer verwendet, wird UTF-8 bei der Kodierung von Tupeln verwendet.
- 'reuseaddr'"reuseaddr""reuseaddr""reuseaddr""reuseaddr""reuseaddr":
-
Kontrolliert die Einstellung der Socket Option SO_REUSEADDR.
Hat 'reuseaddr'"reuseaddr""reuseaddr""reuseaddr""reuseaddr""reuseaddr" den Wert 'false'"false""false""false""false""false", so wird
SO_REUSEADDR nicht gesetzt.
Auf Windows Systemen werden konkurrierende Zugriffe auf einem einzelnen
Anschluss nur detektiert, wenn 'reuseaddr'"reuseaddr""reuseaddr""reuseaddr""reuseaddr""reuseaddr" auf den Wert
'false'"false""false""false""false""false" gesetzt ist.
Default:
'true'"true""true""true""true""true"
- 'tls_enable'"tls_enable""tls_enable""tls_enable""tls_enable""tls_enable":
-
Kontrolliert die Nutzung der Transport Layer Security (TLS) für den Socket.
Hat 'tls_enable'"tls_enable""tls_enable""tls_enable""tls_enable""tls_enable" den Wert 'true'"true""true""true""true""true", so wird ein Socket
für die Annahme TLS-Verschlüsselter Verbindungen erzeugt.
Bei eingeschalteter TLS-Option müssen weiterhin die generischen Parameter
'tls_private_key'"tls_private_key""tls_private_key""tls_private_key""tls_private_key""tls_private_key" und 'tls_certificate'"tls_certificate""tls_certificate""tls_certificate""tls_certificate""tls_certificate" gesetzt sein.
Mit 'tls_private_key'"tls_private_key""tls_private_key""tls_private_key""tls_private_key""tls_private_key" wird der Pfad zur Datei mit dem privaten
Zertifikats-Schlüssel gesetzt, in 'tls_certificate'"tls_certificate""tls_certificate""tls_certificate""tls_certificate""tls_certificate" wird der
Pfad zum öffentlichen Server-Zertifikat angegeben.
TLS-Zertifikat und privater Schlüssel müssen im PEM-Format vorliegen.
Default:
'false'"false""false""false""false""false"
Der akzeptierende Socket wird in AcceptingSocketAcceptingSocketAcceptingSocketAcceptingSocketacceptingSocketaccepting_socket zurückgegeben.
open_socket_acceptopen_socket_acceptOpenSocketAcceptOpenSocketAcceptOpenSocketAcceptopen_socket_accept kehrt
sofort zurück, ohne auf eine Verbindungsanfrage eines anderen Prozesses zu
warten, die durch den Aufruf von open_socket_connectopen_socket_connectOpenSocketConnectOpenSocketConnectOpenSocketConnectopen_socket_connect eingeleitet
wird. Dies ermöglicht es mehreren Prozessen mit dem Prozess, der
open_socket_acceptopen_socket_acceptOpenSocketAcceptOpenSocketAcceptOpenSocketAcceptopen_socket_accept aufruft, eine Verbindung herzustellen. Um eine
ankommende 'HALCON'"HALCON""HALCON""HALCON""HALCON""HALCON" oder 'TCP'"TCP""TCP""TCP""TCP""TCP" Verbindungsanfrage zu
akzeptieren, muss socket_accept_connectsocket_accept_connectSocketAcceptConnectSocketAcceptConnectSocketAcceptConnectsocket_accept_connect aufgerufen werden, so dass
ein Socket für die eigentliche Kommunikation zur Verfügung steht.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
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.
Parameter
PortPortPortPortportport (input_control) number → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Nummer des Ports.
Default:
3000
Wertevorschläge:
3000, 4570
Wertebereich:
1024
≤
Port
Port
Port
Port
port
port
≤
65535
Minimale Schrittweite:
1
Empfohlene Schrittweite:
1
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control) attribute.name(-array) → HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)
Namen der generischen Parameter, die für die
Socket-Verbindung eingestellt werden sollen.
Default:
[]
Werteliste:
'address'"address""address""address""address""address", 'protocol'"protocol""protocol""protocol""protocol""protocol", 'string_encoding'"string_encoding""string_encoding""string_encoding""string_encoding""string_encoding", 'timeout'"timeout""timeout""timeout""timeout""timeout", 'tls_certificate'"tls_certificate""tls_certificate""tls_certificate""tls_certificate""tls_certificate", 'tls_enable'"tls_enable""tls_enable""tls_enable""tls_enable""tls_enable", 'tls_private_key'"tls_private_key""tls_private_key""tls_private_key""tls_private_key""tls_private_key"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control) attribute.value(-array) → HTupleMaybeSequence[Union[float, int, str]]HTupleHtuple (string / real / integer) (string / double / int / long) (HString / double / Hlong) (char* / double / Hlong)
Werte der generischen Parameter, die für die
Socket-Verbindung eingestellt werden sollen.
Default:
[]
Wertevorschläge:
0, 3.0, 'infinite'"infinite""infinite""infinite""infinite""infinite", 'HALCON'"HALCON""HALCON""HALCON""HALCON""HALCON", 'UDP'"UDP""UDP""UDP""UDP""UDP", 'TCP'"TCP""TCP""TCP""TCP""TCP", 'HALCON4'"HALCON4""HALCON4""HALCON4""HALCON4""HALCON4", 'UDP4'"UDP4""UDP4""UDP4""UDP4""UDP4", 'TCP4'"TCP4""TCP4""TCP4""TCP4""TCP4", 'HALCON6'"HALCON6""HALCON6""HALCON6""HALCON6""HALCON6", 'UDP6'"UDP6""UDP6""UDP6""UDP6""UDP6", 'TCP6'"TCP6""TCP6""TCP6""TCP6""TCP6", 'utf8'"utf8""utf8""utf8""utf8""utf8", 'locale'"locale""locale""locale""locale""locale", 'ignore'"ignore""ignore""ignore""ignore""ignore", 'true'"true""true""true""true""true", 'false'"false""false""false""false""false"
AcceptingSocketAcceptingSocketAcceptingSocketAcceptingSocketacceptingSocketaccepting_socket (output_control) socket → HSocket, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Nummer des Sockets.
Beispiel (HDevelop)
* 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)
Nachfolger
socket_accept_connectsocket_accept_connectSocketAcceptConnectSocketAcceptConnectSocketAcceptConnectsocket_accept_connect
Siehe auch
open_socket_connectopen_socket_connectOpenSocketConnectOpenSocketConnectOpenSocketConnectopen_socket_connect,
close_socketclose_socketCloseSocketCloseSocketCloseSocketclose_socket,
get_socket_paramget_socket_paramGetSocketParamGetSocketParamGetSocketParamget_socket_param,
set_socket_paramset_socket_paramSetSocketParamSetSocketParamSetSocketParamset_socket_param,
send_imagesend_imageSendImageSendImageSendImagesend_image,
receive_imagereceive_imageReceiveImageReceiveImageReceiveImagereceive_image,
send_regionsend_regionSendRegionSendRegionSendRegionsend_region,
receive_regionreceive_regionReceiveRegionReceiveRegionReceiveRegionreceive_region,
send_tuplesend_tupleSendTupleSendTupleSendTuplesend_tuple,
receive_tuplereceive_tupleReceiveTupleReceiveTupleReceiveTuplereceive_tuple,
send_datasend_dataSendDataSendDataSendDatasend_data,
receive_datareceive_dataReceiveDataReceiveDataReceiveDatareceive_data
Modul
Foundation