Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

UDPServer

Inherits: RefCounted < Object

用于实现 UDP 服务器的辅助类。

Description

简易服务器,会打开 UDP 套接字,并在收到新数据包时返回已连接的 PacketPeerUDP。另见 PacketPeerUDP.connect_to_host

服务器启动后(listen),你需要调用 poll 按照一定的间隔轮询(例如在 Node._process 中)才能处理新数据包、将它们传递给合适的 PacketPeerUDP、获取新连接。

下面是简单的用法示例:

# server_node.gd
class_name ServerNode
extends Node

var server := UDPServer.new()
var peers = []

func _ready():
    server.listen(4242)

func _process(delta):
    server.poll() # 重要!
    if server.is_connection_available():
        var peer: PacketPeerUDP = server.take_connection()
        var packet = peer.get_packet()
        print("接受对等体:%s:%s" % [peer.get_packet_ip(), peer.get_packet_port()])
        print("接收到数据:%s" % [packet.get_string_from_utf8()])
        # 进行回复,这样对方就知道我们收到了消息。
        peer.put_packet(packet)
        # 保持引用,这样我们就能继续与远程对等体联系。
        peers.append(peer)

    for i in range(0, peers.size()):
        pass # 针对已连接的对等体进行操作。
# client_node.gd
class_name ClientNode
extends Node

var udp := PacketPeerUDP.new()
var connected = false

func _ready():
    udp.connect_to_host("127.0.0.1", 4242)

func _process(delta):
    if !connected:
        # 尝试连接服务器
        udp.put_packet("答案是……42!".to_utf8_buffer())
    if udp.get_available_packet_count() > 0:
        print("已连接:%s" % udp.get_packet().get_string_from_utf8())
        connected = true

Properties

int

max_pending_connections

16

Methods

int

get_local_port ( ) const

bool

is_connection_available ( )