---
title: "raknet.send"
description: "Sends a nonempty payload through the initialized native RakNet peer."
---

```lua
raknet.send(data: string | buffer | {number}, priority: number? = 2, reliability: number? = 3, channel: number? = 0): ()
```

---

## Aliases

None.

---

## Arguments

<ParamField body="data" type="string | buffer | {number}" required>
  A nonempty valid protocol payload as a string, buffer, or 1-based numeric byte array.
</ParamField>

<ParamField body="priority" type="number" default={"2"}>
  The packet priority, from 0 to 3.
</ParamField>

<ParamField body="reliability" type="number" default={"3"}>
  The packet reliability, from 0 to 7.
</ParamField>

<ParamField body="channel" type="number" default={"0"}>
  The ordering channel, from 0 to 31.
</ParamField>

---

## Returns

This function returns no values.

Requires a hooked peer and send function. Priority 0..3; reliability 0..7; channel 0..31. Byte-array entries must be integers 0..255. Existing callbacks run on this path too and can block it. No receipt/status is returned; arbitrary text is not a valid game protocol packet.

**Related types:** [RakNet types & behavior](/reference/raknet/types).

---

## Example

```lua
local function sendVerifiedPayload(payload)
    assert(type(payload) == "string" and #payload > 0, "Provide a valid protocol payload")
    local ok, err = pcall(raknet.send, payload, 2, 3, 0)
    if not ok then warn(err) end
end
-- Call sendVerifiedPayload with a valid packet from your protocol test fixture.
```
