我正在查看以下文档,希望能够理解uniData。我遇到的问题是我无法制作一个模拟真实版本的#34;后端服务器,以测试我的unidata查询。
这是我到目前为止所做的:
我有一个进入服务器的主要条目,听:
public static void main(final String[] args) throws UnknownHostException, IOException {
int clientNumber = 0;
final ServerSocket listener = new ServerSocket(31438);
try {
while (true) {
new MySimulatedConnection(listener.accept(), clientNumber++).start();
}
} finally {
listener.close();
}
}
SimulatedConnection接收请求,并尝试从中读取一些数据。 (纯粹使用插座)
@Override
public void run() {
try {
final BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
final PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
final String input = in.readLine();
if (input == null || input.equals(".")) {
break;
}
out.print("## received message " + input);
}
} catch (final IOException e) {
System.out.println("Error handling client# " + requestNumber + ": " + e.getMessage());
} finally {
try {
socket.close();
} catch (final IOException e) {
System.out.println("## cant close socket " + e.getMessage());
}
}
}
在我的客户端上,我正在建立一个类似这样的uniData会话:
public static void main(final String[] args) throws UnknownHostException, IOException, UniSubroutineException,
UniSessionException {
final FakeClient faker = new FakeClient();
faker.createConnection();
}
private void createConnection() throws UnknownHostException, IOException, UniSubroutineException,
UniSessionException {
System.out.println("Connecting to unidata...");
UniSession uSession = new UniSession();
final UniJava uj = new UniJava();
uSession = uj.openSession();
uSession.setHostName("127.0.0.1");
uSession.setUserName("sample_username");
uSession.setPassword("sample_password");
uSession.setAccountPath("some_account");
uSession.setTimeout(5000);
final int port = uSession.connection.getPort();
System.out.println("Testing connection to " + SERVER_ADDRESS + " on port " + port + "...");
final Socket testSocket = new Socket(SERVER_ADDRESS, port);
if (testSocket.isConnected()) {
System.out.println("Connection successful");
uSession.connect();
System.out.println("## we performed the connect");
final UniSubroutine sub = uSession.subroutine("UNIJAVA.SETUP", 3);
sub.setArg(0, "unknwon host");
sub.call();
System.out.println("## sub called");
} else {
System.out.println("### no connection possbile!");
}
}
为什么我这样做?
好吧,我正在尝试了解如何创建服务器以及如何从中查询某些数据。显然,我的第一选择是使用socketing,因为这似乎是沟通的基本原则。
什么是工作,什么不工作?
到目前为止,客户端能够连接到tcp套接字,并读取此行:
System.out.println("Connection successful");
然而,使用uniApi连接,没有成功和长时间超时(因为这是我在uSession.setTimeout(5000)中配置它的方式;值:
uSession.connect();
另外,我的缓冲读卡器在服务器上没有读取任何数据,因为我猜测我传递的子程序参数实际上并没有被称为字符串。
考虑到这一点,我想做什么?
我想更新我的服务器以接受uniAPI请求,并充当可以执行某些操作的实际服务器。但是,很明显我在实现可能的某些接口或某些连接管理时缺少这些以使其工作。知道那可能是什么吗?