Mercurial > hg > trac > TreeVNC > TreeVNC
view src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java @ 119:f35479f25f4a
fixes
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 26 May 2014 19:01:13 +0900 |
parents | 38e461e9b9c9 |
children | 128cce60c43c |
line wrap: on
line source
package jp.ac.u_ryukyu.treevnc.client; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.util.LinkedList; import jp.ac.u_ryukyu.treevnc.MyRfbProto; import com.glavsoft.exceptions.TransportException; import com.glavsoft.rfb.protocol.ProtocolContext; import com.glavsoft.transport.Reader; public class MyRfbProtoClient extends MyRfbProto { private Reader reader; private ProtocolContext context; boolean proxyFlag = false; int serverMajor, serverMinor; int clientMajor, clientMinor; private boolean normalTermination; public MyRfbProtoClient() { } public MyRfbProtoClient(Reader reader, String host, String port) { this.reader = reader; } @Override public boolean isRoot() { return false; } public boolean readProxyFlag() throws TransportException { int flag = reader.readUInt8(); if (flag == 1) return true; else return false; } public byte[] readEchoPort() throws Exception { byte[] b = new byte[4]; reader.readBytes(b, 0, b.length); return b; } @Override public Socket accept() throws IOException { servSock.setReuseAddress(true); return servSock.accept(); } void sendInitData(OutputStream os) throws IOException { os.write(context.getInitData()); } @Override public void setTerminationType(boolean setType) { normalTermination = setType; } @Override public boolean getTerminationType() { return normalTermination; } @Override public void close() { try { servSock.close(); } catch (IOException e) { e.printStackTrace(); } } @Override public void readCheckDelay(Reader reader) throws TransportException { ByteBuffer buf = multicastqueue.allocate(24); reader.readBytes(buf.array(), 0, 24); LinkedList<ByteBuffer> sendData = new LinkedList<ByteBuffer>(); sendData.add(buf); Socket echoSocket; try { echoSocket = new Socket(getProxyAddr(), 10002); BufferedReader is = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); DataOutputStream os = new DataOutputStream(echoSocket.getOutputStream()); os.writeBytes("checkdelay\n"); os.writeBytes(String.valueOf(buf.getLong(16))+"\n"); System.out.println("delay"+ is.readLine()); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } buf.position(0); multicastqueue.put(sendData); } }