为什么这个程序代码不能在第三次TCP通信中工作?

5次浏览(最近30天)
井上直
井上直 2018年9月5日
评论道: 格雷格2018年9月5日
我创建了可以多次通信的TCP服务器。但是,下面的代码不能工作我的目标。最好列加尔。我做服务器。m和CLIENT.m。此外,我用两个matlab在同一台PC上运行每个文件。
%的服务器
清晰的所有
clc
disp (“服务器声明”);
服务器= tcpip (“0.0.0.0”,30000,“NetworkRole”,“服务器”);
真正的
disp (等待连接的);
fopen(服务器);
disp (连接好了的);
data = fread(server, server. bytesavailable);
disp (“读取数据”);
disp (char(数据));
文件关闭(服务器);
disp (端部连接的);
结束
%客户
清晰的所有
clc
data =“H”;
disp (客户说的);
客户= tcpip (“localhost”,30000,“NetworkRole”,“客户”);
disp (等待连接的);
fopen(客户端);
disp (连接好了的);
写入文件(客户端、数据);
disp (写入数据的);
文件关闭(客户端);

1评论

格雷格
格雷格 2018年9月5日
你在看什么电影吗 disp 客户端输出 服务器启动了吗?

登录置评。

答案(1)

格雷格
格雷格 2018年9月5日
打开外部文件 文件关闭 跳出while循环。反复打开和关闭 tcpip obj是不必要的,而且通常非常昂贵(性能)。而且,由于客户机在打开和关闭之间没有发送消息的等待时间,所以捕获消息的机会几乎为0。

2的评论

井上直
井上直 2018年9月5日
你的想法是在乱码吗?
disp (等待连接的);
fopen(服务器);
真正的
disp (连接好了的);
data = fread(server, server. bytesavailable);
disp (“读取数据”);
disp (char(数据));
结束
文件关闭(服务器);
disp (端部连接的);
在服务器命令窗口显示错误信息。
错误:icinterface/fread(第160行)
大小必须大于0。
错误:matlab_server_ex(第27行)
data = fread(server, server. bytesavailable);
格雷格
格雷格 2018年9月5日
现在,如果没有可用的字节,您需要一些逻辑来防止读取。

登录置评。

登录来回答这个问题。

标签

下载188bet金宝搏


释放

R2018a