TCPIP-сервер, использующий Matlab, но не принимающий - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь создать сервер TCPIP в Matlab, который должен обмениваться данными с клиентом TCPIP, написанным на C ++. До сих пор у меня это работает:

  • Сервер C ++ и клиент Matlab (UDP и TCPIP)
  • клиент C ++ и сервер Matlab (только UDP)

Мой клиент C ++ должен быть в порядке (поэтому я не даю код, который слишком длинен для этого вопроса), я заставил его работать с простыми командами в Python.

На моем сервере Matlab соединение установлено, но функция fread, похоже, ничего не читает ... Однако данные хорошо отправляются в клиентской части C ++. Вот мой код Matlab:

u=tcpip('localhost', 50000, 'NetworkRole', 'server');
fopen(u);
%[data,count]=fread(u,6*8,'uint8'); %this doesn't work either
data=fread(u);

Мой клиент C ++ также находится на 'localhost', и указанный порт для сервера составляет 50000. Я полагаю, именно поэтому связь установлена. Я не понимаю, что здесь происходит. Заранее благодарю вас за все ваши ответы.

РЕДАКТИРОВАТЬ: я тестировал с echotcpip ('on', 50000), и он работает (но, кстати, мне не нужна функция эха).

EDIT2: fwrite (u, somedata) работает отлично ... Я не могу понять, почему не работает fread.

1 Ответ

0 голосов
/ 27 июня 2018

Возможно, слишком поздно: вам нужно прослушивать любые ip-адреса сервера не только на «localhost» (то есть только 127.0.0.1). Вы должны написать u = tcpip ('0.0.0.0', 50000, 'NetworkRole', 'server');

...