У меня проблема в связи TCP / IP между Matlab и C ++. Я создаю сервер в C ++, используя MWinsock
, который может отправлять и получать данные от клиента. В Matlab (действует как клиент) я создаю объект TCP / IP, подключаюсь к серверу и использую fprintf
отправить текст на сервер [например, я отправляю текст «A005» на сервер, fprintf(t, 'A005')
]. Однако на сервере, работающем на C ++, просто получите иногда пустой текст » или только ’05’ или ‘A0’, иногда это ‘A005’. Итак, кто-нибудь может помочь с этой проблемой, большое спасибо!
Спасибо за ответ,
Коды на самом деле просты
* В Matlab используйте объект TCP / IP:
t = tcpip('IPaddress', 1200); %IPaddress get from server after running 'winServer.exe' file.
fopen(t);
fprintf(t, 'A005')
* На сервере я использую файл сервера, разработанный LiyangYu (вы можете скачать .exe файл с Вот).
Я попытался и получил проблему, как описано выше, так что вы могли бы дать какие-либо решения?
Спасибо!
Вы действительно читали код и описание проекта, который вы связано с? Вы не можете просто выбрать какой-нибудь случайный код и ожидать, что он сработает!
Это пример базового сервера чата TCP (плохо запрограммирован, если вы спросите меня). Он работает с сообщениями, отформатированными в соответствии с определенным соглашением:
sprintf('%6d',len)
С учетом вышесказанного, в MATLAB есть простой клиент для взаимодействия с сервером чата C ++:
%# helper functions to send/receive messages according to the protocol
send = @(t,msg) fwrite(t, [sprintf('%6d',length(msg)) msg], 'uint8');
recv = @(t) char(fread(t, str2double(char(fread(t,6,'uint8')')), 'uint8')');
%# connect to server
t = tcpip('127.0.0.1',1200);
fopen(t);
%# send a message
send(t,'hello there')
%# receive response and display it
m = recv(t);
fprintf('[SERVER]: %s\n', m);
%# send BYE message to disconnect from chat
send(t,'bye')
%# close socket and clear it
fclose(t);
delete(t); clear t
Конечно сервер winserver.exe
сначала должен быть запущен в отдельной консоли (не забудьте набрать там свои сообщения, чтобы ответить клиенту)
Других решений пока нет …