Sem saber o suficiente sobre a implementação, só posso supor que o seu processo na extremidade de escuta não faça um loop para recv(2)
do soquete, mas apenas leia uma vez. O fato de você obter tudo de uma vez no Ubuntu e não no OS X provavelmente tem a ver com a implementação da pilha TCP nos dois sistemas, mas não é algo que deva importar; em vez disso, o código na extremidade de recepção deve pesquisar o soquete e ler os dados conforme disponíveis.
Confira as chamadas socket(2)
e recv(2)
, e talvez poste algum código, se achar que isso ajudaria.