У меня сервер приложений, который соединен с телнет клиента (т.е. телнет локальный _port_num - здесь номер порта тот же связан с серверным приложением),RECV функция Winsock розетки
Мое приложение работает правильно, но вещь Я использовал ПРИЕМ следующим образом:
#define BUFLEN 512
char buf[BUFLEN];
iResult = recv(sd, (char *)buf, BUFLEN, 0);
здесь возвращает RECV вызов, как только любой символ прессованного через подключенный телнет терминал, и большую часть времени iResult является 1
или несколько раз 2
, хотя я бы не PRESS ENTER Клиент telnet отправляет кадр, содержащий один символ, на серверное приложение катион.
Как я могу убедиться, что recv должен вернуться после чтения BUFLEN? В случае использования linux recv работает как ожидалось, получите блоки до enter
.
Любая помощь или указатели с благодарностью.
Но я думаю, что это не правильно, recv должен блокироваться, пока не будет нажата клавиша ввода в терминале telnet. Если количество байтов больше, чем будет прочитано до BUFLEN и поднять соответствующую ошибку falg, а telnet сохранит данные, которые не читаются, и в следующем чтении я могу прочитать, откуда это осталось ... Моя роль в том, почему recv возвращается как в скором времени, когда один вход charator на telnet –
'recv должен блокироваться до тех пор, пока не будет нажата клавиша ввода в терминале telnet' - no. Независимо от того, насколько вы хотите, чтобы документальное поведение recv() соответствовало вашим ожиданиям, дизайну и коду, оно не изменится. –
Не могли бы вы исследовать ваш комментарий? Вы имеете в виду, что даже если мы не нажимаем enter через telnet-терминал, тогда он также отправит персонажа. Это противоречит клиенту telnet в Linux? –