Sends bytes on a connected socket using optional flags. This guide demonstrates its use in PHP code and explains when the result or side effect needs extra checks.
What It Does
Sends bytes on a connected socket using optional flags.
Syntax and Parameters
The examples below show a real call to socket_send with suitable arguments. Read the function call in context: its connection, handle, input data or other prerequisites are created before use.
Requirements: Sockets extension; operating-system networking support.
These examples are for an isolated development environment. Hostnames, credentials and remote paths must be replaced with your approved configuration.
Example 1: Core Behavior
Use local loopback or a connected socket pair to avoid unintended public network exposure.
<?php
$pair = [];
if (!socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $pair)) throw new RuntimeException('Socket pair unavailable');
$sock = $pair[0];
$payload = 'hello';
$result = socket_send($pair[0], "hello", 5, 0);
echo is_object($result) ? get_debug_type($result) : (is_array($result) ? json_encode($result) : var_export($result, true));
socket_close($pair[0]); socket_close($pair[1]);
Observe the returned value or changed resource state. A successful function call can still require additional checks before a higher-level operation is considered successful.
Example 2: Alternative or Failure Case
The operation may return a status or a partial byte count depending on timing and transport.
<?php
$pair = [];
if (!socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $pair)) throw new RuntimeException('Socket pair unavailable');
$sock = $pair[0];
$payload = 'world';
$result = socket_send($pair[0], "hello", 5, 0);
echo is_object($result) ? get_debug_type($result) : (is_array($result) ? json_encode($result) : var_export($result, true));
socket_close($pair[0]); socket_close($pair[1]);
Compare the different inputs, environment assumptions or result checks. Do not use a transport-level success value as proof that all business-level requirements were met.
Practical Example: Applying the Rule
Apply explicit timeouts and check errors before integrating the code into a long-running server.
<?php
$pair = [];
if (!socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $pair)) throw new RuntimeException('Socket pair unavailable');
$sock = $pair[0];
$payload = 'ping!';
$result = socket_send($pair[0], "hello", 5, 0);
echo is_object($result) ? get_debug_type($result) : (is_array($result) ? json_encode($result) : var_export($result, true));
socket_close($pair[0]); socket_close($pair[1]);
In an application, convert low-level failures into controlled responses and log only non-sensitive diagnostic context.
Important Behavior and Edge Cases
Returns bytes sent, which may be less than requested; loop for full transmission.
Network operations can block or read/write only part of a message. Treat end-of-stream, timeout and transient errors separately.
Comparison with Related Functions or Patterns
| Approach | When it differs |
|---|---|
| socket_send | Sends bytes on a connected socket using optional flags. |
| Related API or pattern | socket_write sends data without explicit MSG_* flags. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Assuming a single read or write always transfers an entire message | Returns bytes sent, which may be less than requested; loop for full transmission. |
| Substituting a related API without checking its semantics | socket_write sends data without explicit MSG_* flags. |
Key Takeaways
- Sends bytes on a connected socket using optional flags.
- Returns bytes sent, which may be less than requested; loop for full transmission.
- socket_write sends data without explicit MSG_* flags.
Select this API or pattern based on its documented behavior and the trust boundaries in your own application, and test all external integrations against their actual deployments.