class_packetpeerudp.rst 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/3.6/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/3.6/doc/classes/PacketPeerUDP.xml.
  6. .. _class_PacketPeerUDP:
  7. PacketPeerUDP
  8. =============
  9. **Inherits:** :ref:`PacketPeer<class_PacketPeer>` **<** :ref:`Reference<class_Reference>` **<** :ref:`Object<class_Object>`
  10. UDP packet peer.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. UDP packet peer. Can be used to send raw UDP packets as well as :ref:`Variant<class_Variant>`\ s.
  15. .. rst-class:: classref-reftable-group
  16. Methods
  17. -------
  18. .. table::
  19. :widths: auto
  20. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  21. | void | :ref:`close<class_PacketPeerUDP_method_close>` **(** **)** |
  22. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  23. | :ref:`Error<enum_@GlobalScope_Error>` | :ref:`connect_to_host<class_PacketPeerUDP_method_connect_to_host>` **(** :ref:`String<class_String>` host, :ref:`int<class_int>` port **)** |
  24. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  25. | :ref:`String<class_String>` | :ref:`get_packet_ip<class_PacketPeerUDP_method_get_packet_ip>` **(** **)** |const| |
  26. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  27. | :ref:`int<class_int>` | :ref:`get_packet_port<class_PacketPeerUDP_method_get_packet_port>` **(** **)** |const| |
  28. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  29. | :ref:`bool<class_bool>` | :ref:`is_connected_to_host<class_PacketPeerUDP_method_is_connected_to_host>` **(** **)** |const| |
  30. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  31. | :ref:`bool<class_bool>` | :ref:`is_listening<class_PacketPeerUDP_method_is_listening>` **(** **)** |const| |
  32. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  33. | :ref:`Error<enum_@GlobalScope_Error>` | :ref:`join_multicast_group<class_PacketPeerUDP_method_join_multicast_group>` **(** :ref:`String<class_String>` multicast_address, :ref:`String<class_String>` interface_name **)** |
  34. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  35. | :ref:`Error<enum_@GlobalScope_Error>` | :ref:`leave_multicast_group<class_PacketPeerUDP_method_leave_multicast_group>` **(** :ref:`String<class_String>` multicast_address, :ref:`String<class_String>` interface_name **)** |
  36. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  37. | :ref:`Error<enum_@GlobalScope_Error>` | :ref:`listen<class_PacketPeerUDP_method_listen>` **(** :ref:`int<class_int>` port, :ref:`String<class_String>` bind_address="*", :ref:`int<class_int>` recv_buf_size=65536 **)** |
  38. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  39. | void | :ref:`set_broadcast_enabled<class_PacketPeerUDP_method_set_broadcast_enabled>` **(** :ref:`bool<class_bool>` enabled **)** |
  40. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  41. | :ref:`Error<enum_@GlobalScope_Error>` | :ref:`set_dest_address<class_PacketPeerUDP_method_set_dest_address>` **(** :ref:`String<class_String>` host, :ref:`int<class_int>` port **)** |
  42. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  43. | :ref:`Error<enum_@GlobalScope_Error>` | :ref:`wait<class_PacketPeerUDP_method_wait>` **(** **)** |
  44. +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  45. .. rst-class:: classref-section-separator
  46. ----
  47. .. rst-class:: classref-descriptions-group
  48. Method Descriptions
  49. -------------------
  50. .. _class_PacketPeerUDP_method_close:
  51. .. rst-class:: classref-method
  52. void **close** **(** **)**
  53. Closes the UDP socket the **PacketPeerUDP** is currently listening on.
  54. .. rst-class:: classref-item-separator
  55. ----
  56. .. _class_PacketPeerUDP_method_connect_to_host:
  57. .. rst-class:: classref-method
  58. :ref:`Error<enum_@GlobalScope_Error>` **connect_to_host** **(** :ref:`String<class_String>` host, :ref:`int<class_int>` port **)**
  59. Calling this method connects this UDP peer to the given ``host``/``port`` pair. UDP is in reality connectionless, so this option only means that incoming packets from different addresses are automatically discarded, and that outgoing packets are always sent to the connected address (future calls to :ref:`set_dest_address<class_PacketPeerUDP_method_set_dest_address>` are not allowed). This method does not send any data to the remote peer, to do that, use :ref:`PacketPeer.put_var<class_PacketPeer_method_put_var>` or :ref:`PacketPeer.put_packet<class_PacketPeer_method_put_packet>` as usual. See also :ref:`UDPServer<class_UDPServer>`.
  60. \ **Note:** Connecting to the remote peer does not help to protect from malicious attacks like IP spoofing, etc. Think about using an encryption technique like SSL or DTLS if you feel like your application is transferring sensitive information.
  61. .. rst-class:: classref-item-separator
  62. ----
  63. .. _class_PacketPeerUDP_method_get_packet_ip:
  64. .. rst-class:: classref-method
  65. :ref:`String<class_String>` **get_packet_ip** **(** **)** |const|
  66. Returns the IP of the remote peer that sent the last packet(that was received with :ref:`PacketPeer.get_packet<class_PacketPeer_method_get_packet>` or :ref:`PacketPeer.get_var<class_PacketPeer_method_get_var>`).
  67. .. rst-class:: classref-item-separator
  68. ----
  69. .. _class_PacketPeerUDP_method_get_packet_port:
  70. .. rst-class:: classref-method
  71. :ref:`int<class_int>` **get_packet_port** **(** **)** |const|
  72. Returns the port of the remote peer that sent the last packet(that was received with :ref:`PacketPeer.get_packet<class_PacketPeer_method_get_packet>` or :ref:`PacketPeer.get_var<class_PacketPeer_method_get_var>`).
  73. .. rst-class:: classref-item-separator
  74. ----
  75. .. _class_PacketPeerUDP_method_is_connected_to_host:
  76. .. rst-class:: classref-method
  77. :ref:`bool<class_bool>` **is_connected_to_host** **(** **)** |const|
  78. Returns ``true`` if the UDP socket is open and has been connected to a remote address. See :ref:`connect_to_host<class_PacketPeerUDP_method_connect_to_host>`.
  79. .. rst-class:: classref-item-separator
  80. ----
  81. .. _class_PacketPeerUDP_method_is_listening:
  82. .. rst-class:: classref-method
  83. :ref:`bool<class_bool>` **is_listening** **(** **)** |const|
  84. Returns whether this **PacketPeerUDP** is listening.
  85. .. rst-class:: classref-item-separator
  86. ----
  87. .. _class_PacketPeerUDP_method_join_multicast_group:
  88. .. rst-class:: classref-method
  89. :ref:`Error<enum_@GlobalScope_Error>` **join_multicast_group** **(** :ref:`String<class_String>` multicast_address, :ref:`String<class_String>` interface_name **)**
  90. Joins the multicast group specified by ``multicast_address`` using the interface identified by ``interface_name``.
  91. You can join the same multicast group with multiple interfaces. Use :ref:`IP.get_local_interfaces<class_IP_method_get_local_interfaces>` to know which are available.
  92. \ **Note:** Some Android devices might require the ``CHANGE_WIFI_MULTICAST_STATE`` permission for multicast to work.
  93. .. rst-class:: classref-item-separator
  94. ----
  95. .. _class_PacketPeerUDP_method_leave_multicast_group:
  96. .. rst-class:: classref-method
  97. :ref:`Error<enum_@GlobalScope_Error>` **leave_multicast_group** **(** :ref:`String<class_String>` multicast_address, :ref:`String<class_String>` interface_name **)**
  98. Removes the interface identified by ``interface_name`` from the multicast group specified by ``multicast_address``.
  99. .. rst-class:: classref-item-separator
  100. ----
  101. .. _class_PacketPeerUDP_method_listen:
  102. .. rst-class:: classref-method
  103. :ref:`Error<enum_@GlobalScope_Error>` **listen** **(** :ref:`int<class_int>` port, :ref:`String<class_String>` bind_address="*", :ref:`int<class_int>` recv_buf_size=65536 **)**
  104. Makes this **PacketPeerUDP** listen on the ``port`` binding to ``bind_address`` with a buffer size ``recv_buf_size``.
  105. If ``bind_address`` is set to ``"*"`` (default), the peer will listen on all available addresses (both IPv4 and IPv6).
  106. If ``bind_address`` is set to ``"0.0.0.0"`` (for IPv4) or ``"::"`` (for IPv6), the peer will listen on all available addresses matching that IP type.
  107. If ``bind_address`` is set to any valid address (e.g. ``"192.168.1.101"``, ``"::1"``, etc), the peer will only listen on the interface with that addresses (or fail if no interface with the given address exists).
  108. .. rst-class:: classref-item-separator
  109. ----
  110. .. _class_PacketPeerUDP_method_set_broadcast_enabled:
  111. .. rst-class:: classref-method
  112. void **set_broadcast_enabled** **(** :ref:`bool<class_bool>` enabled **)**
  113. Enable or disable sending of broadcast packets (e.g. ``set_dest_address("255.255.255.255", 4343)``. This option is disabled by default.
  114. \ **Note:** Some Android devices might require the ``CHANGE_WIFI_MULTICAST_STATE`` permission and this option to be enabled to receive broadcast packets too.
  115. .. rst-class:: classref-item-separator
  116. ----
  117. .. _class_PacketPeerUDP_method_set_dest_address:
  118. .. rst-class:: classref-method
  119. :ref:`Error<enum_@GlobalScope_Error>` **set_dest_address** **(** :ref:`String<class_String>` host, :ref:`int<class_int>` port **)**
  120. Sets the destination address and port for sending packets and variables. A hostname will be resolved using DNS if needed.
  121. \ **Note:** :ref:`set_broadcast_enabled<class_PacketPeerUDP_method_set_broadcast_enabled>` must be enabled before sending packets to a broadcast address (e.g. ``255.255.255.255``).
  122. .. rst-class:: classref-item-separator
  123. ----
  124. .. _class_PacketPeerUDP_method_wait:
  125. .. rst-class:: classref-method
  126. :ref:`Error<enum_@GlobalScope_Error>` **wait** **(** **)**
  127. Waits for a packet to arrive on the listening port. See :ref:`listen<class_PacketPeerUDP_method_listen>`.
  128. \ **Note:** :ref:`wait<class_PacketPeerUDP_method_wait>` can't be interrupted once it has been called. This can be worked around by allowing the other party to send a specific "death pill" packet like this:
  129. ::
  130. # Server
  131. socket.set_dest_address("127.0.0.1", 789)
  132. socket.put_packet("Time to stop".to_ascii())
  133. # Client
  134. while socket.wait() == OK:
  135. var data = socket.get_packet().get_string_from_ascii()
  136. if data == "Time to stop":
  137. return
  138. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  139. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  140. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  141. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`