关于上一篇日志《TWS API 开发手记——连接到TWS平台》的修正
上一篇日志中,提到利用C#做对TWS的链接,但是后来的测试中不确定是因为防火墙的原因还是其他什么原因,发现无法正常获取到数据,因此我又转到Linux平台上,重新用Java写了一遍,能正常获取数据。因此暂时决定以后这个内容全部换到Linux平台上,用Java进行实现。
Java代码的实现原理和C#的实现原理是一样的,你依然需要一台装了TWS的机器,以及可以连通到TWS的网路。因为TWS有支持Linux的版本,所以如果有条件的同学可以自己在Linux环境上搭建开发环境。
public class TestConnection
{
public static void main(String args[]) throws Exception
{
EWrapperImpl wrapper = new EWrapperImpl();
final EClientSocket m_client = wrapper.getClient();
final EReaderSignal m_signal = wrapper.getSignal();
//! [connect]
m_client.eConnect("127.0.0.1", 7000, 0);
//! [connect]
//! [ereader]
final EReader reader = new EReader(m_client, m_signal);
reader.start();
new Thread() {
public void run() {
while (m_client.isConnected()) {
m_signal.waitForSignal();
try {
reader.processMsgs();
} catch (Exception e) {
System.out.println("Exception: "+e.getMessage());
}
}
}
}.start();
//! [ereader]
Thread.sleep(1000);
// TODO ...
Thread.sleep(100000);
m_client.eDisconnect();
}
}
基本结构还是一样的,你需要实现 EWrapper 这个类,并需要提供给main函数可以访问的EReaderSignal, EClientSocket这两个类,然后建立对TWS服务的访问,在TODO这部分,就是实现具体的业务逻辑,并需要在业务结束后,调用对clientSocket的eDisconnect命令,结束对TWS的请求服务。
大体上就是这么回事,因为前几个月一直打游戏去了,所以没来得及更新,但愿这个项目能一直做下去吧,这样就不会弃坑了。