matlab socket模块6,linux环境下Matlab中socket网络功能的实现

本文介绍了如何在Matlab中通过Java Socket编程实现TCP客户端功能,详细讲解了在Linux环境下创建Client类并调用其方法进行连接、数据传输和关闭连接的过程。同时,讨论了版本兼容问题及解决办法。
摘要由CSDN通过智能技术生成

毕业设计需要利用matlab实现tcp连接中客户端的需求,而客户端需要借助socket来实现,

所以需要解决的问题是在matlab中实现socket网络功能,实验环境为linux。

通过查阅资料,总结得出实现的方法:

1)利用Java的socket编程,将客户端的功能集中到一个自定义的类Client

2)在Matlab中调用Java自定义的类Client

一、Java中Client类的实现

直接Java提供的Socket接口来实现即可,封装的类Client提供了五个成员函数供调用

public String initConnection(String address)

public String closeConnection()

public int readData()

public boolean writeData(int key)

public boolean writeString(String str)

/* @file

* @author liujianhua

* @date 2016.3.28

*

* @section DESCRIPTION

*

* The Client class represents the client of a tcp connection

*/

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.net.InetAddress;

import java.net.Socket;

public class Client{

public Socket server;

public DataInputStream netInputStream;

public DataOutputStream netOutputStream;

public byte[] readResult;

public String initConnection(String address){

try{

InetAddress addr = InetAddress.getByName(address);

server = new Socket(addr,5678);

netInputStream = new DataInputStream(server.getInputStream());

netOutputStream = new DataOutputStream(server.getOutputStream());

readResult = new byte[1024];

}catch(Exception e)

{

return "init connection fail";

}

return "init connection success";

}

public String closeConnection()

{

try{

netInputStream.close();

netOutputStream.close();

server.close();

}catch(Exception e)

{

return "close connection fail";

}

return "close connection true";

}

public int readData()

{

int data = -1;

try{

netInputStream.read(readResult);

String result = new String(readResult);

Integer inter = new Integer(result);

data = inter.intValue();

}catch(Exception e)

{

return -1;

}

return data;

}

public boolean writeData(int key)

{

try{

String str = Integer.toString(key);

netOutputStream.write(str.getBytes());

}catch(Exception e)

{

return false;

}

return true;

}

public boolean writeString(String str)

{

try{

netOutputStream.write(str.getBytes());

}catch(Exception e)

{

return false;

}

return true;

}

}

二、在Matlab中调用Java自定义的类Client

1)定义Matlab中Java环境的ext目录

573787bd12771f102ff2bf4dd213f5bb.png

2)将Java程序打包成jar文件,并放入ext目录(选择上面结果第一个)

利用eclipse来实现

选择项目Export

a56e83ea537cf1863fe3e4946b7e861d.png

JAR文件放置的目录为上面所得的ext目录的第一个

805e947ffe4e2759f327d25d32be33f6.png

3)重新启动Matlab,即可以使用Java自定义的类Client

新建脚本文件useclient.m

client = Client;

disp(client.initConnection('127.0.0.1'));

while 1

num = input('input the integer you want to send:');

client.writeData(num);

if num == 0

res = client.readData();

break;

end

end

disp(client.closeConnection());

在命令行执行即可

可能出现的问题:

在第一次实验的出现无法识别JAVA自定义的类的现象,

java.lang.UnsupportedClassVersionError

研究发现是eclipse编译使用的JDK的版本为1.8,而matlab中java环境的jdk版本为1.6,

低版本不能够兼容高版本,因此出现错误。

查看matlab中java环境的jdk的版本

77cf9dbb2b76eae888847ad4bc5e4bc2.png

因此我的做法是在原有1.8版本的jdk的基础上,安装了1.5版本jdk,并且在eclipse中设定Java Compiler

76610eb5223c181b546d7cdeb63f9ce8.png

参考文章:

http://xiaolongfeixiang.iteye.com/blog/1772871

http://www.cnblogs.com/rond/p/3565113.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值