Дополняю тему вопросом: как установить таймаут на чтение из сокета? (fprecv)
а так же проверить сколько скопилось в буфере отправки.
Найдено 47 результатов
- 02.04.2017 16:13:58
- Форум: Lazarus
- Тема: Как лучше организовать TCP Сервер и Клиент
- Ответы: 29
- Просмотры: 29693
- 12.03.2017 00:40:10
- Форум: Lazarus
- Тема: не могу поймать вывод консольной программы (Линукс)
- Ответы: 20
- Просмотры: 18797
Re: не могу поймать вывод консольной программы (Линукс)
Не получает имя файла, соответственно вывод ошибки в поток StErr
Если набрано именно так как здесь, то и не получит имя файла. См. кавычки. +fname+ у вас часть строковой константы.
Опечатался, когда набирал сюда
Работает вот так (без доп скриптов)
proc.Executable:='mediainfo';
proc ...
Если набрано именно так как здесь, то и не получит имя файла. См. кавычки. +fname+ у вас часть строковой константы.
Опечатался, когда набирал сюда
Работает вот так (без доп скриптов)
proc.Executable:='mediainfo';
proc ...
- 10.03.2017 11:38:10
- Форум: Lazarus
- Тема: не могу поймать вывод консольной программы (Линукс)
- Ответы: 20
- Просмотры: 18797
Re: не могу поймать вывод консольной программы (Линукс)
Значит Output
ну так все равно пусто
Если по-старинке
proc.CommandLine:='mediainfo --Inform="General;%Duration%" "'+fName+'"'; \0
то вывод есть, но он игнорирует "General;%Duration%", те неожиданное дает ВСЕ.
proc.Executable:='mediainfo';
proc.Parameters.Add ...
ну так все равно пусто
Если по-старинке
proc.CommandLine:='mediainfo --Inform="General;%Duration%" "'+fName+'"'; \0
то вывод есть, но он игнорирует "General;%Duration%", те неожиданное дает ВСЕ.
proc.Executable:='mediainfo';
proc.Parameters.Add ...
- 09.03.2017 23:03:03
- Форум: Lazarus
- Тема: не могу поймать вывод консольной программы (Линукс)
- Ответы: 20
- Просмотры: 18797
Re: не могу поймать вывод консольной программы (Линукс)
tema писал(а):Скинь сюда что кажет консоль с такими командами:Код: Выделить всё
$ mediainfo --Inform="General;%Duration%" твой-файл 1>t1.txt 2>t2.txt
$ cat t1.txt
$ cat t2.txt
Решили пойти от противного) момент..
t1 содержит корректный вывод
- 09.03.2017 19:18:34
- Форум: Lazarus
- Тема: не могу поймать вывод консольной программы (Линукс)
- Ответы: 20
- Просмотры: 18797
Re: Работа с консолью(Линукс)
Я в догадках, что не так
Ну mediainfo пишет не в Stderr, а в Output. Это ffmpeg и avconv пишет в Stderr. Поэтому и пусто.
и там и там шиш... вот что странно
сейчас попробую с memo
- 09.03.2017 13:33:19
- Форум: Lazarus
- Тема: не могу поймать вывод консольной программы (Линукс)
- Ответы: 20
- Просмотры: 18797
Re: Работа с консолью(Линукс)
В том то и дело, выхлоп есть. Экспериментировал с тем же кодом: так же пусто и на mediaifo... а вот на evtest, ls, uname - в потоке уже есть данные.... что не так с нужными мне утилитами?
Так точно пробовал?
AProcess.Executable := 'ffmpeg';
AProcess.Parameters.Add('-i ...
Так точно пробовал?
AProcess.Executable := 'ffmpeg';
AProcess.Parameters.Add('-i ...
- 08.03.2017 23:26:20
- Форум: Lazarus
- Тема: не могу поймать вывод консольной программы (Линукс)
- Ответы: 20
- Просмотры: 18797
Re: Работа с консолью(Линукс)
В том то и дело, выхлоп есть. Экспериментировал с тем же кодом: так же пусто и на mediaifo... а вот на evtest, ls, uname - в потоке уже есть данные.... что не так с нужными мне утилитами?
- 08.03.2017 20:47:06
- Форум: Lazarus
- Тема: не могу поймать вывод консольной программы (Линукс)
- Ответы: 20
- Просмотры: 18797
не могу поймать вывод консольной программы (Линукс)
Собственно вопрос об странности одной, не могу поймать вывод консольной программы
result:=false;
proc:=Tprocess.Create(nil);
proc.Executable:='ffmpeg';
proc.Parameters.Add('-i "'+fname+'"');
proc.Options:=[poWaitOnExit, poUsePipes, poNoConsole] ...
result:=false;
proc:=Tprocess.Create(nil);
proc.Executable:='ffmpeg';
proc.Parameters.Add('-i "'+fname+'"');
proc.Options:=[poWaitOnExit, poUsePipes, poNoConsole] ...
- 21.02.2017 22:39:05
- Форум: Lazarus
- Тема: Как лучше организовать TCP Сервер и Клиент
- Ответы: 29
- Просмотры: 29693
Re: Как лучше организовать TCP Сервер и Клиент
Для TCP-сервера алгоритм такой (для линукса, в винде в принципе то же самое):
4. принимаем входящее подключение, функция accept(), при этом создается новый сокет, похожий на исходящий, только уже подключенный
.. пункт 4 повторяем для каждого входящего подключения
Вот какую забыл важную мелочь ...
4. принимаем входящее подключение, функция accept(), при этом создается новый сокет, похожий на исходящий, только уже подключенный
.. пункт 4 повторяем для каждого входящего подключения
Вот какую забыл важную мелочь ...
- 21.02.2017 21:07:09
- Форум: Lazarus
- Тема: Как лучше организовать TCP Сервер и Клиент
- Ответы: 29
- Просмотры: 29693
Re: Как лучше организовать TCP Сервер и Клиент
Это мне ответ?)
Нет, клиент один и только один - другое приложение. Средства только нативные. (желательно одинаковые как для c++ так и для fpc).
Задача на текущий момент сводится к тому что сервер ждет подключение, если клиент после передачи умирает - забыть про него и ждать и принять его еще раз ...
Нет, клиент один и только один - другое приложение. Средства только нативные. (желательно одинаковые как для c++ так и для fpc).
Задача на текущий момент сводится к тому что сервер ждет подключение, если клиент после передачи умирает - забыть про него и ждать и принять его еще раз ...
- 21.02.2017 19:26:37
- Форум: Lazarus
- Тема: Как лучше организовать TCP Сервер и Клиент
- Ответы: 29
- Просмотры: 29693
Re: Как лучше организовать TCP Сервер и Клиент
как бы
Ладно это пол беды, как сделать так чтобы сокет при потери клиента мог принять другого? (данный мною выше код данного не выполняет, хотя это и странно)
Код: Выделить всё
CloseSocket(SockH)Ладно это пол беды, как сделать так чтобы сокет при потери клиента мог принять другого? (данный мною выше код данного не выполняет, хотя это и странно)
- 18.02.2017 22:44:34
- Форум: Lazarus
- Тема: Как лучше организовать TCP Сервер и Клиент
- Ответы: 29
- Просмотры: 29693
Re: Как лучше организовать TCP Сервер и Клиент
Здравствуйте! Юзаю socket юнит и не могу понять почему периодически не биндится сокет.
//существуем пока не мрет приложение
while (not terminated) do
begin
Fready:=false;
//'создаем сокет, слушаем, реагируем'
SockH:=fpSocket(AF_INET, SOCK_STREAM,0);
SockAddr.sin_family:=AF ...
//существуем пока не мрет приложение
while (not terminated) do
begin
Fready:=false;
//'создаем сокет, слушаем, реагируем'
SockH:=fpSocket(AF_INET, SOCK_STREAM,0);
SockAddr.sin_family:=AF ...
- 21.01.2017 22:04:32
- Форум: Сторонние средства
- Тема: Многопоточные приложения и связанное с ними в Linux, MacOS
- Ответы: 15
- Просмотры: 31046
Re: Многопоточные приложения и связанное с ними в Linux, Mac
Upd.Upd.
Вообще, тут надо просто отладить, непонятно на каком шаге AV возникает, что при этом в логах, что делает в это время поток который должен разбудиться.
Вангую, что в FScheduler^.Suspended идет попытка разыменовать невалидный указатель. Вообще, непонятно зачем здесь использовать ...
Вообще, тут надо просто отладить, непонятно на каком шаге AV возникает, что при этом в логах, что делает в это время поток который должен разбудиться.
Вангую, что в FScheduler^.Suspended идет попытка разыменовать невалидный указатель. Вообще, непонятно зачем здесь использовать ...
- 21.01.2017 20:13:29
- Форум: Сторонние средства
- Тема: Многопоточные приложения и связанное с ними в Linux, MacOS
- Ответы: 15
- Просмотры: 31046
Re: Многопоточные приложения и связанное с ними в Linux, Mac
Для меня тоже это загадка)
Ладно, понятно что напрямую из главного потока работает.
Для теста создал поток от главного, перенес туда код. (Главный понятно спать sleep уложил, и эти строки закомментил )
while input<>'exit' do
begin
readln(input);
....
if input='start' then ...
Ладно, понятно что напрямую из главного потока работает.
Для теста создал поток от главного, перенес туда код. (Главный понятно спать sleep уложил, и эти строки закомментил )
while input<>'exit' do
begin
readln(input);
....
if input='start' then ...
- 21.01.2017 19:08:13
- Форум: Сторонние средства
- Тема: Многопоточные приложения и связанное с ними в Linux, MacOS
- Ответы: 15
- Просмотры: 31046
Re: Многопоточные приложения и связанное с ними в Linux, Mac
Эта вкусность ничего не меняет, т.к. вы 1 000 000 раз в секунду запускаете миллион MainElevator.Start; после первых пол секунды у вас должен закипать процессор.
А вот и не запускает... С чего он должен запускать если выполнение далее не пройдет пока не отработает Readln();
По логам видно было бы ...
А вот и не запускает... С чего он должен запускать если выполнение далее не пройдет пока не отработает Readln();
По логам видно было бы ...
