PacketPeerUDP
Inherits: PacketPeer < Reference < Object
UDP数据包客户端。
描述
UDP数据包对等体。可以用来发送原始的UDP数据包以及Variant。
方法
void | close ( ) |
connect_to_host ( String host, int port ) | |
get_packet_ip ( ) const | |
get_packet_port ( ) const | |
is_connected_to_host ( ) const | |
is_listening ( ) const | |
join_multicast_group ( String multicast_address, String interface_name ) | |
leave_multicast_group ( String multicast_address, String interface_name ) | |
listen ( int port, String bind_address=”*”, int recv_buf_size=65536 ) | |
void | set_broadcast_enabled ( bool enabled ) |
set_dest_address ( String host, int port ) | |
wait ( ) |
方法说明
- void close ( )
关闭PacketPeerUDP
当前正在侦听的UDP套接字。
调用此方法将UDP对等体连接到给定的host
/port
对。UDP实际上是无连接的,所以这个选项只意味着来自不同地址的入包被自动丢弃,而出包总是被发送到连接的地址(不允许将来调用set_dest_address)。该方法不向远程对等体发送任何数据,要发送数据,请使用PacketPeer.put_var或PacketPeer.put_packet。参见UDPServer。
注意:连接到远程对等体并不能防止IP欺骗等恶意攻击。如果您觉得您的应用程序正在传输敏感信息,可以考虑使用SSL或DTLS等加密技术。
- String get_packet_ip ( ) const
返回发送最后一个数据包(通过PacketPeer.get_packet或PacketPeer.get_var接收)的远程对等体的IP。
- int get_packet_port ( ) const
返回发送最后一个数据包(通过PacketPeer.get_packet或PacketPeer.get_var接收)的远程对等方的端口。
- bool is_connected_to_host ( ) const
如果UDP套接字已打开并已连接到远程地址,则返回true
。请参阅connect_to_host。
- bool is_listening ( ) const
返回这个PacketPeerUDP
是否正在监听。
使用 interface_name
标识的接口加入 multicast_address
指定的多播组。
您可以使用多个接口加入同一个多播组。使用 IP.get_local_interfaces 了解哪些接口可用。
注意:一些 Android 设备可能需要 CHANGE_WIFI_MULTICAST_STATE
权限才能进行多播。
从multicast_address
指定的组播组中移除interface_name
标识的接口。
使这个PacketPeerUDP
在与bind_address
绑定的端口
上监听,缓冲区大小为recv_buf_size
。
如果bind_address
被设置为"*"
(默认),对等体将监听所有可用地址(包括IPv4和IPv6)。
如果bind_address
被设置为"0.0.0.0"
(对于IPv4)或":"
(对于IPv6),对等体将监听所有符合该IP类型的可用地址。
如果bind_address
被设置为任何有效的地址(例如"192.168.1.101"
,":1"
等),对等体将只监听具有该地址的接口(如果不存在具有该地址的接口,则失败)。
- void set_broadcast_enabled ( bool enabled )
启用或禁用广播数据包的发送(例如:set_dest_address("255.255.255.255", 4343)
。这个选项在默认情况下是禁用的。
注意:一些 Android 设备可能需要 CHANGE_WIFI_MULTICAST_STATE
权限和本选项被启用来接收广播包。
设置发送数据包和变量的目标地址和端口。如果需要,将使用DNS解析一个主机名。
注意:在向广播地址(例如:255.255.255.255
)发送数据包之前,必须启用set_broadcast_enabled。
- Error wait ( )
等待数据包到达侦听端口。参见listen。
注意:wait一旦被调用就不能被中断。这可以通过允许另一方发送一个特定的“death pill”包来解决,如下所示:
# Server
socket.set_dest_address("127.0.0.1", 789)
socket.put_packet("Time to stop".to_ascii())
# Client
while socket.wait() == OK:
var data = socket.get_packet().get_string_from_ascii()
if data == "Time to stop":
return