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)
  • 后跟实际的消息字符串

话虽如此,下面是一个简单的 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必须首先在单独的控制台中运行(不要忘记在其中输入消息以响应客户端)

于 2013-04-24T11:24:21.817 回答