2

Matlab と C++ 間の TCP/IP 通信に問題があります。を使用して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 ファイルをダウンロードできます)。

上記のような問題が発生したので、解決策を教えていただけますか?ありがとうございました!

4

1 に答える 1

0

リンク先のプロジェクトのコードと説明を実際に読みましたか? ランダムなコードを選択して、それが機能することを期待することはできません!

これは基本的な TCP チャット サーバーの例です (私に言わせれば、プログラムが不十分です)。特定の規則に従ってフォーマットされたメッセージで機能します。

  • メッセージの長さ (スペースで埋められた右揃えの 6 文字):sprintf('%6d',len)
  • その後に実際のメッセージ文字列が続きます

そうは言っても、C++ チャット サーバーと対話する MATLAB の単純なクライアントは次のとおりです。

%# 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は最初に別のコンソールで実行する必要があります (クライアントに応答するためにそこにメッセージを入力することを忘れないでください)。

于 2013-04-24T11:24:21.817 に答える