open_socket_acceptT_open_socket_acceptOpenSocketAcceptOpenSocketAccept (Operator)

Name

open_socket_acceptT_open_socket_acceptOpenSocketAcceptOpenSocketAccept — Öffnen eines Sockets, der Verbindungsanfragen zulässt.

Signatur

open_socket_accept( : : Port, GenParamName, GenParamValue : AcceptingSocket)

Herror T_open_socket_accept(const Htuple Port, const Htuple GenParamName, const Htuple GenParamValue, Htuple* AcceptingSocket)

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_acceptOpenSocketAcceptOpenSocketAcceptOpenSocketAccept ö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 PortPortPortPortport bestimmten Port.

Mit dem Parameter 'protocol'"protocol""protocol""protocol""protocol" kann das verwendete Kommunikationsprotokoll spezifiziert werden. Voreingestellt ist das 'HALCON'"HALCON""HALCON""HALCON""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'"HALCON4""HALCON4""HALCON4""HALCON4" eine HALCON Verbindung über IPv4. Mögliche Werte für eine generische Socketkommunikation sind 'UDP'"UDP""UDP""UDP""UDP" und '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_dataSendDataSendDataSendData und receive_datareceive_dataReceiveDataReceiveDataReceiveData.

Mit dem generischen Parameter 'address'"address""address""address""address" kann das Socket angewiesen werden, nur Verbindungen zu akzeptieren, die an eine bestimme Adresse gerichtet sind. So würde der Wert 'localhost'"localhost""localhost""localhost""localhost" das Socket anweisen, nur Verbindungen zu akzeptieren, die an die Netzwerkaddresse '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" entspricht.

Mit dem generischen Parameter 'timeout'"timeout""timeout""timeout""timeout" kann ein Timeout für diesen Socket angegeben werden. Er wird in der Einheit Sekunden oder als Zeichenkette 'infinite'"infinite""infinite""infinite""infinite" angegeben und ist im Besonderen dazu bestimmt, den Timeout und Wartemodus für einen folgenden socket_accept_connectsocket_accept_connectSocketAcceptConnectSocketAcceptConnectSocketAcceptConnect Operatoraufruf, bei dem der Parameter Wait auf 'auto'"auto""auto""auto""auto" gesetzt ist, zu setzen.

Mit dem generischen Parameter 'string_encoding'"string_encoding""string_encoding""string_encoding""string_encoding" kann die Kodierung für das Senden und Empfangen von Zeichenketten angegeben werden. Die Kodierung wird für send_tuplesend_tupleSendTupleSendTupleSendTuple, receive_tuplereceive_tupleReceiveTupleReceiveTupleReceiveTuple, send_datasend_dataSendDataSendDataSendData und receive_datareceive_dataReceiveDataReceiveDataReceiveData verwendet. Wenn das Kommunikationsprotokoll '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.

Mit dem generischen Parameter 'reuseaddr'"reuseaddr""reuseaddr""reuseaddr""reuseaddr" kann die Einstellung der Socket Option SO_REUSEADDR kontrolliert werden. Der Standardwert ist 'true'"true""true""true""true". Hat 'reuseaddr'"reuseaddr""reuseaddr""reuseaddr""reuseaddr" den Wert '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" auf den Wert 'false'"false""false""false""false" gesetzt ist.

Der akzeptierende Socket wird in AcceptingSocketAcceptingSocketAcceptingSocketAcceptingSocketacceptingSocket zurückgegeben. open_socket_acceptopen_socket_acceptOpenSocketAcceptOpenSocketAcceptOpenSocketAccept kehrt sofort zurück, ohne auf eine Verbindungsanfrage eines anderen Prozesses zu warten, die durch den Aufruf von open_socket_connectopen_socket_connectOpenSocketConnectOpenSocketConnectOpenSocketConnect eingeleitet wird. Dies ermöglicht es mehreren Prozessen mit dem Prozess, der open_socket_acceptopen_socket_acceptOpenSocketAcceptOpenSocketAcceptOpenSocketAccept aufruft, eine Verbindung herzustellen. Um eine ankommende 'HALCON'"HALCON""HALCON""HALCON""HALCON" oder 'TCP'"TCP""TCP""TCP""TCP" Verbindungsanfrage zu akzeptieren, muss socket_accept_connectsocket_accept_connectSocketAcceptConnectSocketAcceptConnectSocketAcceptConnect aufgerufen werden, so dass ein Socket für die eigentliche Kommunikation zur Verfügung steht.

Ausführungsinformationen

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

PortPortPortPortport (input_control)  number HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Nummer des Ports.

Defaultwert: 3000

Wertevorschläge: 3000, 4570

Typischer Wertebereich: 1024 ≤ Port Port Port Port port ≤ 65535

Minimale Schrittweite: 1

Empfohlene Schrittweite: 1

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Namen der generischen Parameter, die für die Socket-Verbindung eingestellt werden sollen.

Defaultwert: []

Werteliste: 'address'"address""address""address""address", 'protocol'"protocol""protocol""protocol""protocol", 'string_encoding'"string_encoding""string_encoding""string_encoding""string_encoding", 'timeout'"timeout""timeout""timeout""timeout"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHtuple (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.

Defaultwert: []

Wertevorschläge: 0, 3.0, 'infinite'"infinite""infinite""infinite""infinite", 'HALCON'"HALCON""HALCON""HALCON""HALCON", 'UDP'"UDP""UDP""UDP""UDP", 'TCP'"TCP""TCP""TCP""TCP", 'HALCON4'"HALCON4""HALCON4""HALCON4""HALCON4", 'UDP4'"UDP4""UDP4""UDP4""UDP4", 'TCP4'"TCP4""TCP4""TCP4""TCP4", 'HALCON6'"HALCON6""HALCON6""HALCON6""HALCON6", 'UDP6'"UDP6""UDP6""UDP6""UDP6", 'TCP6'"TCP6""TCP6""TCP6""TCP6", 'utf8'"utf8""utf8""utf8""utf8", 'locale'"locale""locale""locale""locale", 'ignore'"ignore""ignore""ignore""ignore"

AcceptingSocketAcceptingSocketAcceptingSocketAcceptingSocketacceptingSocket (output_control)  socket HSocket, HTupleHTupleHtuple (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_connectSocketAcceptConnectSocketAcceptConnectSocketAcceptConnect

Siehe auch

open_socket_connectopen_socket_connectOpenSocketConnectOpenSocketConnectOpenSocketConnect, close_socketclose_socketCloseSocketCloseSocketCloseSocket, get_socket_paramget_socket_paramGetSocketParamGetSocketParamGetSocketParam, set_socket_paramset_socket_paramSetSocketParamSetSocketParamSetSocketParam, send_imagesend_imageSendImageSendImageSendImage, receive_imagereceive_imageReceiveImageReceiveImageReceiveImage, send_regionsend_regionSendRegionSendRegionSendRegion, receive_regionreceive_regionReceiveRegionReceiveRegionReceiveRegion, send_tuplesend_tupleSendTupleSendTupleSendTuple, receive_tuplereceive_tupleReceiveTupleReceiveTupleReceiveTuple, send_datasend_dataSendDataSendDataSendData, receive_datareceive_dataReceiveDataReceiveDataReceiveData

Modul

Foundation