Matlab探寻(二):和Android进行TCPIP通信(java.net.Socket)

  两个Matlab之间进行Tcpip通信是很简单的,直接调用matlab中的tcpip()函数就行了。但是由于项目需要,Matlab要和Android设备进行Tcpip通信,tcpip()函数就不能用了,所以本文在Matlab中调用java的类来实现。关于在matlab调用java类进行TCPip通信可以参考[TCP/IP Socket Communications in MATLAB using Java Classes]

客户端

  Matlab作为客户端(client),Android设备作为服务器(server)。Matlab客户端函数如下:


function ClientSend(message) 

   import java.net.Socket
   import java.io.*

   global client_socket
   global IsSocketOpened

   host = '172.22.37.3';  %%Android设备的IP地址
   port = 8000;           %%端口号
   fprintf(1, 'connecting to %s:%d\n', host, port); 

     try
       if IsSocketOpened == 0     
           client_socket = Socket(host, port);
           IsSocketOpened = 1;
       end
       output_stream   = client_socket.getOutputStream;            
       d_output_stream = PrintStream(output_stream);   
       fprintf(1, 'Writing %d bytes\n', length(message))
       d_output_stream.println(message);   
    catch
       if ~isempty(client_socket)
           client_socket.close;
       end              
       s = lasterror
       pause(1);
    end
end

  这里调用了两个和TCPSocket有关的java类 java.net.Socket 和 java.io.*。该函数最终实现的功能是:给Android发送字符串数据,函数的输入量即为要发送的数据

主函数

  在matlab里调用上面的客户端函数,代码如下:

global client_socket
global IsSocketOpened
client_socket = [];
IsSocketOpened = 0;

while true 
    a = input('input your command:','s');
    ClientSend(a);
    pause(1);
end

  这里定义了两个全局变量client_socket和IsSocketOpened,主要是防止客户端重复连接。

运行结果

  下载个Android“网络调试助手”,Android和Matlab处于同一局域网,配置Android设备为tcp server,注意地址和端口号。我这里是“172.22.37.3:8000”。

  运行Matlab程序,输入我们要发送的字符串:

  可以看到Android设备接收到了我们从Matlab发送过来的数据:

  到这里,我们就成功实现了Matlab和Android设备的TCPIP通信!接下来就可以自己编写Android代码,同时实现和Matlab的双向通信。
  Well done!

猜你喜欢

转载自blog.csdn.net/u011389706/article/details/76129143