Поведение TCP на Mac OS по сравнению с Ubuntu

Следующий процесс приводит к другому поведению в Mac OS и Ubutu:

cat some_text_file | xargs a_shell_script.sh

a_shell_script.sh

#!/bin/bash
echo "$@" | telnet 127.0.0.1 123
exit 0

Сервер TCP, слушающий на порте 123, задан сценарием для обработки содержания some_text_file. На моей реализации Ubuntu этого процесса длина входа, который получает сервер TCP, является длиной some_text_file. На моей реализации OSX однако - это - меньшая часть длины, т.е. вход становится усеченным так или иначе.

Примечание: Это не проблема xargs насколько я могу сказать. Количество args ($#) доступный a_shell_script.sh равно по обеим реализациям.

Спасибо!

2
задан 05.10.2010, 03:07

1 ответ

Не зная достаточно о реализации, я могу только предположить, что Ваш процесс на конце слушания не циклично выполняется к recv(2) от сокета, но только читает однажды. То, что Вы получаете все сразу на Ubuntu и Вы не делаете на OS X, вероятно, имеет отношение к реализации стека TCP в этих двух системах, но это не что-то, что должно иметь значение; вместо этого, код принимающего конца должен опросить сокет и считать данные как доступные.

Проверьте socket(2) и recv(2) вызовы, и возможно отправляют некоторый код, если Вы думаете, что он помог бы.

2
ответ дан 09.01.2020, 03:42

Теги

Похожие вопросы