com.sparshui.client.ClientServerConnection Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jmol Show documentation
Show all versions of jmol Show documentation
Jmol: an open-source Java viewer for chemical structures in 3D
package com.sparshui.client;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import com.sparshui.common.ConnectionType;
import com.sparshui.common.NetworkConfiguration;
/**
* Represents the connection to the GestureServer.
*
* @author Jay Roltgen
*
*/
public class ClientServerConnection extends Thread {
private SparshClient _client;
private Socket _socket;
private ClientToServerProtocol _protocol;
/**
* Instantiate a Server Connection object.
*
* @param address
* The ip address of the server to connect to.
* @param client
* The client object that the gesture client is using to
* listen for messages from the server.
* @throws UnknownHostException
* If "address" is an unknwown host.
* @throws IOException
* If a communication error ocurrs.
*/
public ClientServerConnection(String address, SparshClient client) throws UnknownHostException, IOException {
_client = client;
_socket = new Socket(address, NetworkConfiguration.CLIENT_PORT);
DataOutputStream out = new DataOutputStream(_socket.getOutputStream());
out.writeByte(ConnectionType.CLIENT);
_protocol = new ClientToServerProtocol(_socket);
this.start();
}
/**
* Begin processing requests.
*/
//@override
@Override
public void run() {
Thread.currentThread().setName("SparshUI Client->ServerConnection");
while(_socket.isConnected()) {
if (!_protocol.processRequest(_client)) //BH -- must allow for server failure
break;
}
}
public void close() {
try {
_socket.close();
} catch (IOException e) {
// TODO
}
}
}