antibiotics11 / net-socket
PHP 网络套接字编程工具类。
dev-main
2024-05-22 07:06 UTC
Requires
- php: >=8.3
- ext-sockets: *
- jetbrains/phpstorm-attributes: ^1.0
This package is auto-updated.
Last update: 2024-09-22 07:57:02 UTC
README
PHP 网络套接字编程工具类。
类
- NetSocket\InetAddress: 表示IP地址、域名和地址族。
- NetSocket\Endpoint: 表示具有InetAddress和端口号对的网络端点。
- NetSocket\Socket\Wrapper\Socket: 包装PHP Socket对象和套接字函数。
- NetSocket\Socket\Wrapper\SocketError: 包装PHP套接字错误。
使用说明
TCP服务器
use antibiotics11\NetSocket\{InetAddress, Endpoint}; use antibiotics11\NetSocket\Socket\Wrapper\{Socket, SocketError}; // Define the server endpoint $serverEndpoint = new Endpoint( inetAddress: InetAddress::getByAddress("127.0.0.1"), port: 12345 ); try { // Create a server socket $serverSocket = Socket::create( domain: Socket::DOMAIN_INET, type: Socket::TYPE_STREAM, level: Socket::LEVEL_TCP ); // Bind the server socket to the server endpoint $serverSocket->bindTo(endpoint: $serverEndpoint); // Start listening for incoming connections $serverSocket->listen(); // Accept an incoming connection $clientSocket = $serverSocket->accept(); // Read data from the client $receivedData = $clientSocket->read(); // Get the remote endpoint of the client $clientEndpoint = $clientSocket->getRemoteEndpoint(); printf("Received \"%s\" from %s\r\n", $receivedData, $clientEndpoint); // Shut down the client socket $clientSocket->shutdown(); // Close the server socket $serverSocket->close(); } catch (SocketError $e) { printf("Socket Error: %s\r\n", $e->getSocketErrorMessage()); }
TCP客户端
use antibiotics11\NetSocket\{InetAddress, Endpoint}; use antibiotics11\NetSocket\Socket\Wrapper\{Socket, SocketError}; // Define the server endpoint to connect to $serverEndpoint = new Endpoint( inetAddress: InetAddress::getByAddress("127.0.0.1"), port: 12345 ); try { // Create a client socket $clientSocket = Socket::create( domain: Socket::DOMAIN_INET, type: Socket::TYPE_STREAM, level: Socket::LEVEL_TCP ); // Connect the client socket to the server endpoint $clientSocket->connectTo(endpoint: $serverEndpoint); // Send data to the server $clientSocket->write(data: "Hello, Server!"); // Close the client socket $clientSocket->close(); } catch (SocketError $e) { printf("Socket Error: %s\r\n", $e->getSocketErrorMessage()); }
需求
- PHP >= 8.3.0
- jetbrains/phpstorm-attributes >= 1.0
安装
composer require antibiotics11/net-socket:dev-main