1. Сокет - это для связи файлов.
2. Обязательно один файл слушает, а другой отправляет.
3. Самое простое - это сервер. Обычный сервер. Например: https://chajnik.ru
Он слушает 80-й порт
Что такое порт? - это циферки в конце адреса страницы. Например: https://chajnik.ru:80
4. Теперь нам осталось написать клиента:
4.1 php:
<?php
$host = "chajnik.ru";
$port = 80;
// Открываем сокет с таймаутом 30 секунд
$fp = fsockopen($host, $port, $errno, $errstr, 30);
if (!$fp) {
echo "Ошибка: $errstr ($errno)<br>\n";
} else {
// Формируем HTTP-запрос (обратите внимание на \r\n - это стандарт HTTP)
$request = "GET / HTTP/1.0\r\n";
$request .= "Host: $host\r\n";
$request .= "Connection: Close\r\n\r\n";
// Отправляем запрос
fwrite($fp, $request);
// Читаем ответ построчно, пока сокет не закроется
$response = '';
while (!feof($fp)) {
$response .= fgets($fp, 1024);
}
// Закрываем сокет
fclose($fp);
// Выводим результат
echo $response;
}
?>
==========
4.2 Perl:
#!/usr/bin/perl
use Socket;
$host="chajnik.ru";
$port="80";
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$iaddr = inet_aton($host);
$paddr = sockaddr_in($port, $iaddr);
connect(SOCK, $paddr);
#send (SOCK, "GET / HTTP/1.0\n\n", 0);
send (SOCK, "GET / HTTP/1.0\nHOST:$host\n\n", 0);
@data=<SOCK>;
close(SOCK);
print @data;
===========
5. Посмотреть? Тоже пожалуйста:
https://chajnik.ru/soket.php
Есть и заголовки и тело ответа:
HTTP/1.0 200 OK
Connection: close
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: no-cache, must-revalidate
Content-Type: text/html; charset=utf-8
Content-Language: ru
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Date: Sun, 29 Mar 2026 17:42:27 GMT
Server: LiteSpeed
Vary: User-Agent
<!DOCTYPE html>
<!--[if IEMobile 7.....
==============
7. Что плохо:
Все эти скрипты работают только по протоколу HTTP (без шифрования). Если вы попробуете подключиться по сокету к https://yandex.ru (порт 443), сервер пришлет вам бинарные данные для начала TLS-рукопожатия (шифрования). Чтобы прочитать сайт через сокеты по HTTPS, вам пришлось бы написать в коде реализацию всего криптографического протокола SSL/TLS.
Именно поэтому в реальной жизни используют cURL. Он внутри себя использует сокеты, но берет на себя всю черновую работу по шифрованию (HTTPS), сжатию данных (Gzip) и правильному формированию заголовков.
Итог: Сокеты работает на самом нижнем "разумном" уровне для задачи получения контента по сети в языке высокого уровня. Ниже — только битва с операционной системой и проводами.
8. При перепечатке ссылка на источник: https://chajnik.ru/socket обязательна
