欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php tcp 示例

楊偉東1年前7瀏覽0評論
PHP TCP 示例 - 構建網絡連接程序
開發網絡連接程序需要掌握一些網絡編程技術,例如TCP網絡通信協議。TCP協議提供了一個可靠的網絡連接,它能夠確保數據包的傳輸順序和可靠性。在PHP中,我們可以使用socket函數來實現TCP網絡編程。通過socket,我們可以建立客戶端和服務器端之間的網絡連接,實現數據交換和通信。
下面,我們將介紹兩個基本的PHP TCP示例。第一個示例是創建一個TCP客戶端程序,用于向遠程服務器發送數據并接收響應。第二個示例我們將介紹如何創建一個TCP服務器程序,用于接收客戶端發來的請求并返回響應。
示例1 - TCP客戶端
以下是一個簡單的示例代碼,它創建了一個TCP客戶端程序。該程序將連接到指定的服務器和端口,并發送一些數據到服務器,然后等待響應。
<?php
// 創建socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$socket) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
exit();
}
// 連接到服務器
$host = "192.168.0.100";
$port = 1234;
$result = socket_connect($socket, $host, $port);
if ($result === false) {
echo "socket_connect() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
exit();
}
// 發送數據到服務器
$message = "Hello, Server!";
$len = strlen($message);
$bytes_sent = socket_send($socket, $message, $len, 0);
if ($bytes_sent === false) {
echo "socket_send() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
exit();
}
// 接收響應從服務器
$bytes_received = socket_recv($socket, $buf, 2048, 0);
if ($bytes_received === false) {
echo "socket_recv() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
exit();
}
// 關閉連接
socket_close($socket);
// 顯示從服務器接收的響應
echo "Received: " .$buf;
?>

在上面的代碼中,首先使用socket_create()函數創建一個TCP套接字,并指定協議族為AF_INET。然后使用socket_connect函數連接到指定的服務器和端口。在連接成功后,使用socket_send函數發送數據到服務器。
接下來,程序使用socket_recv函數接收從服務器返回的響應。最后,使用socket_close函數關閉TCP連接。
示例2 - TCP服務器
以下是一個簡單的示例程序,它創建了一個TCP服務器。該服務器將監聽指定的端口,并等待客戶端的連接請求。當客戶端連接到服務器后,服務器將接收客戶端發送的數據,并返回響應。
<?php
// 創建socket
$server_socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$server_socket) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
exit();
}
// 綁定到指定端口
$host = "127.0.0.1";
$port = 1234;
$result = socket_bind($server_socket, $host, $port);
if (!$result) {
echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($server_socket)) . "\n";
exit();
}
// 開始監聽
$result = socket_listen($server_socket);
if (!$result) {
echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($server_socket)) . "\n";
exit();
}
echo "Server started. Listening to port $port...\n";
// 循環接收客戶端連接
while (true) {
// 等待客戶端連接
$client_socket = socket_accept($server_socket);
if (!$client_socket) {
echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($server_socket)) . "\n";
break;
}
// 從客戶端接收數據
$buf = socket_read($client_socket, 2048);
if ($buf === false) {
echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($server_socket)) . "\n";
break;
}
// 發送響應給客戶端
$response = "Hello, Client!";
socket_write($client_socket, $response, strlen($response));
// 關閉客戶端連接
socket_close($client_socket);
}
// 關閉服務器socket
socket_close($server_socket);
?>

在上面的代碼中,首先使用socket_create()函數創建一個TCP套接字。然后使用socket_bind函數將套接字綁定到指定的端口和IP地址。接下來,程序使用socket_listen函數開始監聽指定的端口。
服務器進入while循環,等待客戶端連接請求。當客戶端發送連接請求時,socket_accept()函數接受連接,并返回一個新的套接字用于與客戶端通信。
在接收客戶端發送的請求后,服務器使用socket_read函數從客戶端讀取數據,并返回一個響應給客戶端。最后使用socket_close函數關閉連接。服務器將一直監聽指定端口并等待客戶端連接請求,直到程序被終止。
參考資料:
- https://www.php.net/manual/en/function.socket-create.php
- https://www.php.net/manual/en/function.socket-connect.php
- https://www.php.net/manual/en/function.socket-send.php
- https://www.php.net/manual/en/function.socket-recv.php
- https://www.php.net/manual/en/function.socket-bind.php
- https://www.php.net/manual/en/function.socket-accept.php
- https://www.php.net/manual/en/function.socket-read.php
- https://www.php.net/manual/en/function.socket-write.php
- https://www.php.net/manual/en/function.socket-listen.php