Пожалуйста, обратите внимание, что пользователь заблокирован
Специалисты по Сям, надоумьте где почитать про следующий момент.
Есть сокет сервер на локалхосте.
Открываю к нему коннект обычной командой telnet localhost 7777 . В wireshark вижу один пакет данных от клиента к серверу, в серверной части срабатывает
accept(server_fd, (struct sockaddr*)&address, (socklen_t*)&addrlen)) ;
и дальше процесс останавливается, как и должно быть - в ожидании данных от сокет клиента.
Но, если я создаю сокет клиент на сях, простейшим методом типа
Коннект с этого модуля вызывает генерацию 3 пакетов данных для сервера, и естественно сокет сервак помимо accept'а получает на вход некий мусор. Хотя никаких данных я не отправляю, просто открываю соединение.
Почему так?
Подозреваю что есть некий буфер в сокет клиенте который нужно очищать перед connect'ом к серверу, но как это сделать? В описании к либе <sys/socket.h> особых подробностей нет.
Есть сокет сервер на локалхосте.
Открываю к нему коннект обычной командой telnet localhost 7777 . В wireshark вижу один пакет данных от клиента к серверу, в серверной части срабатывает
accept(server_fd, (struct sockaddr*)&address, (socklen_t*)&addrlen)) ;
и дальше процесс останавливается, как и должно быть - в ожидании данных от сокет клиента.
Но, если я создаю сокет клиент на сях, простейшим методом типа
Код:
if ((client_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("socket failed");
exit(EXIT_FAILURE);
}
else{
printf("socket ready");
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr(TCP_ADDR);
address.sin_port = htons(PORT);
if ( connect(client_fd, (struct sockaddr*)&address, addrlen)) {
printf("connect error? \n");
}
else
{
printf("connected \n");
}
Коннект с этого модуля вызывает генерацию 3 пакетов данных для сервера, и естественно сокет сервак помимо accept'а получает на вход некий мусор. Хотя никаких данных я не отправляю, просто открываю соединение.
Почему так?
Подозреваю что есть некий буфер в сокет клиенте который нужно очищать перед connect'ом к серверу, но как это сделать? В описании к либе <sys/socket.h> особых подробностей нет.