Ответ
Да, я разрабатывал сетевые приложения с использованием TCP-сокетов в C++. TCP (Transmission Control Protocol) — это надежный потоковый протокол с установкой соединения, гарантирующий порядок и доставку пакетов.
Пример базового TCP-клиента на C++ с использованием Berkeley sockets:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <cstring>
int main() {
// Создание сокета
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) { /* обработка ошибки */ }
// Настройка адреса сервера
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);
// Установка соединения
if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
// обработка ошибки
}
// Отправка данных
const char* msg = "Hello, server!";
send(sockfd, msg, strlen(msg), 0);
// Получение ответа (упрощённо, в реальности нужен цикл)
char buffer[256];
ssize_t bytes_read = recv(sockfd, buffer, sizeof(buffer)-1, 0);
if (bytes_read > 0) {
buffer[bytes_read] = ' ';
// обработка полученных данных
}
close(sockfd);
return 0;
}
В реальных проектах я использовал неблокирующие сокеты с мультиплексированием (select/poll/epoll в Linux или kqueue в BSD) для создания асинхронных серверов, способных обрабатывать множество соединений в одном потоке.