|
1 / 1 / 2
Регистрация: 22.04.2013
Сообщений: 132
|
||||||
Почему виснет recv?16.01.2014, 22:54. Показов 2512. Ответов 5
Метки нет (Все метки)
Не могу понять почему у меня в клиентской части программы виснет приём данных? Если выполнять всегда только 1у итерацию, то всё принимается нормально. Сервер скачан с инета Home ftp server
0
|
||||||
| 16.01.2014, 22:54 | |
|
Ответы с готовыми решениями:
5
Почему при ответе на пакет ( recv / send ) скорость очень сильно падает ? Почему виснет! |
|
25 / 25 / 16
Регистрация: 12.04.2013
Сообщений: 85
|
|
| 16.01.2014, 23:05 | |
|
если сокет открыт как SOCK_STREAM, то 0 байт примется только в том случае, если другая сторона закроет соединение (если точнее - передаст по TCP протоколу флаг FIN). Если у вас нет приема закрытия соединения, значит сервер не хочет его закрывать по каким-либо причинам.
А если соединение открыто как SOCK_DGRAM (ну и тем более как SOCK_RAW) то 0 байт и не получите.
2
|
|
|
1 / 1 / 2
Регистрация: 22.04.2013
Сообщений: 132
|
|
| 16.01.2014, 23:42 [ТС] | |
|
У меня SOCK_STREAM. А что значит "нет приема закрытия соединения". У меня такого нет. Как его сделать? Сколько примеров в интернете просмотрел, нигде ничего дополнительно не делается, даже в учебниках просто ждут 0.
0
|
|
|
25 / 25 / 16
Регистрация: 12.04.2013
Сообщений: 85
|
|
| 17.01.2014, 00:15 | |
|
Закрыть соединение - это сделать close (socket), где socket - это дескриптор активного соединения.
Ваш сервер должен по завершению передачи данных закрыть это соединение. т.е. например алгоритм серверного приложения. 1. открыть слушающий сокет на входящие соединения (listener) 2. при подключении клиента - сделать accept на другой сокет, например sck1 3. передать данные в этот сокет 4. закрыть соединение close (sck1). именно при этом вызове, на клиентской стороне функция recv вернет, что она приняла 0 байт. при этом слушающий сокет остается открытым и готов к подлючению следующего клиента
0
|
|
|
1 / 1 / 2
Регистрация: 22.04.2013
Сообщений: 132
|
|
| 17.01.2014, 23:49 [ТС] | |
|
Спасибо за разъяснение. Примерно так и представлял.
Разобрался. Оказалось ftp сервер работает немного отлично от других серверов. По командному порту 21 он отправляет только команду и соединение не разрывает, следовательно и не шлёт 0. А вот по сокету для данных в конце шлёт 0, т.к. после передачи разрывает соединение. Сделал 2 разных функции для приёма данных и для приёма команд от сервера, теперь всё ок. Спасибо за помощь.
0
|
|
|
Z3JheSBoYXQ=
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
|
||
| 21.01.2014, 21:26 | ||
|
зы. Камер Стивенс, "Сети TCP/IP Разработка приложение клиент/сервер Linux/Posix" подробно разжевана данная тема.
0
|
||
| 21.01.2014, 21:26 | |
|
Помогаю со студенческими работами здесь
6
Почему виснет программа почему виснет браузер Почему программа виснет
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|