linux环境下Matlab中socket网络功能的实现
2016-03-28 21:21
211 查看
毕业设计需要利用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)
二、在Matlab中调用Java自定义的类Client
1)定义Matlab中Java环境的ext目录
2)将Java程序打包成jar文件,并放入ext目录(选择上面结果第一个)
利用eclipse来实现
选择项目Export
JAR文件放置的目录为上面所得的ext目录的第一个
3)重新启动Matlab,即可以使用Java自定义的类Client
新建脚本文件useclient.m
可能出现的问题:
在第一次实验的出现无法识别JAVA自定义的类的现象,
研究发现是eclipse编译使用的JDK的版本为1.8,而matlab中java环境的jdk版本为1.6,
低版本不能够兼容高版本,因此出现错误。
查看matlab中java环境的jdk的版本
因此我的做法是在原有1.8版本的jdk的基础上,安装了1.5版本jdk,并且在eclipse中设定Java Compiler
参考文章:
http://xiaolongfeixiang.iteye.com/blog/1772871 http://www.cnblogs.com/rond/p/3565113.html
所以需要解决的问题是在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目录
2)将Java程序打包成jar文件,并放入ext目录(选择上面结果第一个)
利用eclipse来实现
选择项目Export
JAR文件放置的目录为上面所得的ext目录的第一个
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的版本
因此我的做法是在原有1.8版本的jdk的基础上,安装了1.5版本jdk,并且在eclipse中设定Java Compiler
参考文章:
http://xiaolongfeixiang.iteye.com/blog/1772871 http://www.cnblogs.com/rond/p/3565113.html
相关文章推荐
- 深度信念网络(Deep Belief Network)
- Node.js HTTP Server对象及GET、POST请求
- Android网络开启、关闭整理
- 服务器"IP地址与网络上的其他系统有冲突"问题诊断及解决
- 实现开启和关闭android移动网络(做AppWidget开发的收获)
- TCP/UDP协议常用端口号服务
- Centos的网络配置命令和文件
- 了解HTTP协议栈(实践篇)
- TCP面试题(一)之TCP的三次握手和accept()的顺序
- Java网络编程(URL&URLConnection)
- Bzoj1458:士兵占领:带上下界的网络流
- 网络编程
- VMware虚拟机强制关闭后,无法联网
- OkHttp使用post请求注意点
- http://www.prayer-laputa.com/blog/archives/588
- okHttp demo封装
- http://xss.heimaoseoer.com/TIqiri?1413093855
- 最大流算法(网络流问题)
- HTTP真的很简单
- HTTP协议解析