Matlab 和 C 使用套接字进行通信

标签 c matlab sockets

我在 Matlab 和 C 之间的通信时遇到问题。我使用 client.c 在 C 中创建了一个客户端以及 Matlab 中使用 TCP/IP 的服务器:

t=tcpip('0.0.0.0', 30000, 'NetworkRole', 'server');
fopen(t);
data=fread(t, t.BytesAvailable);

但是服务器收到一个空缓冲区并在 fread 处给出错误:

Error using icinterface/fread (line 163)
SIZE must be greater than 0.

-------------------------------------------------------- -------------------------------------------------------

编辑:C 语言的服务器客户端运行良好。问题出在 Matlab TCP/IP 对象中,我在 Matlab 中尝试了服务器客户端并给出了相同的错误。

在 Matlab 一侧(客户端或服务器),它无法扫描书面文本。其中,以下代码

fprintf(t,'Hi')
text = fscanf(t)

结果: 警告:读取失败:在读取之前发生超时 终结者已到。 并打印一个空文本。

请大家帮忙! 谢谢。

最佳答案

通过在客户端打开连接和写入 t 之间添加暂停来解决。

所以 Matlab 客户端如下:

t=tcpip('localhost', 4000, 'NetworkRole', 'client');
fopen(t);
pause(1);
fprintf(t,'Hi');

关于Matlab 和 C 使用套接字进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20468411/

相关文章:

c - C 编程如何在没有头文件的情况下工作?

c - 数字到字符?

c - 在矩阵乘法中解释

c - 通过 mex 传回数组

Matlab等高线图平滑颜色

c - select() 系统调用不会解锁

c - JNA 写入 stdout 时内存访问无效

Matlab:在等高线图上指定 clabel 的位置

actionscript-3 - writeObject 和 writeUTFBytes 之间的区别

c++ - 我如何将接受的套接字作为参数发送到函数