comparison VNCServer/VNCServer.cs @ 29:2ecb82eea559

VNCServer: small change in web client handling
author Ivo Smits <Ivo@UCIS.nl>
date Thu, 18 Apr 2013 18:42:52 +0200
parents 644a923bca98
children
comparison
equal deleted inserted replaced
28:3bfb3ee64362 29:2ecb82eea559
251 } 251 }
252 for (int i = 0; i < 16; i++) if (VNCAuthResponse[i] != check[i]) return false; 252 for (int i = 0; i < 16; i++) if (VNCAuthResponse[i] != check[i]) return false;
253 return true; 253 return true;
254 } 254 }
255 } 255 }
256 public class VNCServer { 256 public class VNCServer : IHTTPContentProvider {
257 public event EventHandler<VNCClientConnectedEventArgs> ClientConnected; 257 public event EventHandler<VNCClientConnectedEventArgs> ClientConnected;
258 public EndPoint LocalEndPoint { get; protected set; } 258 public EndPoint LocalEndPoint { get; protected set; }
259 public Boolean Listening { get; protected set; } 259 public Boolean Listening { get; protected set; }
260 private Socket socket = null; 260 private Socket socket = null;
261 public VNCServer() : this(null) { } 261 public VNCServer() : this(null) { }
295 } catch (ObjectDisposedException ex) { 295 } catch (ObjectDisposedException ex) {
296 Debug.WriteLine(ex); 296 Debug.WriteLine(ex);
297 } 297 }
298 if (Listening) socket.BeginAccept(AcceptCallback, socket); 298 if (Listening) socket.BeginAccept(AcceptCallback, socket);
299 } 299 }
300 void IHTTPContentProvider.ServeRequest(HTTPContext context) {
301 WebSocketPacketStream stream = new WebSocketPacketStream(context);
302 ClientAccepted(new VNCServerConnection(stream, context.Socket));
303 }
300 protected void ClientAccepted(VNCServerConnection client) { 304 protected void ClientAccepted(VNCServerConnection client) {
301 VNCClientConnectedEventArgs clientargs = new VNCClientConnectedEventArgs(this, client, client.RemoteEndPoint); 305 VNCClientConnectedEventArgs clientargs = new VNCClientConnectedEventArgs(this, client, client.RemoteEndPoint);
302 if (ClientConnected != null) ClientConnected(this, clientargs); 306 if (ClientConnected != null) ClientConnected(this, clientargs);
303 if (clientargs.Drop) { 307 if (clientargs.Drop) {
304 client.Close(); 308 client.Close();
311 private HTTPServer httpserver; 315 private HTTPServer httpserver;
312 public WebVNCServer() : this(null) { } 316 public WebVNCServer() : this(null) { }
313 public WebVNCServer(int port) : this(new IPEndPoint(IPAddress.Any, port)) { } 317 public WebVNCServer(int port) : this(new IPEndPoint(IPAddress.Any, port)) { }
314 public WebVNCServer(EndPoint ep) : base(ep) { 318 public WebVNCServer(EndPoint ep) : base(ep) {
315 httpserver = new HTTPServer(); 319 httpserver = new HTTPServer();
316 httpserver.ContentProvider = new HTTPContentProviderFunction(HandleClient); 320 httpserver.ContentProvider = this;
317 httpserver.ServeFlashPolicyFile = true; 321 httpserver.ServeFlashPolicyFile = true;
318 } 322 }
319 public override void Listen(EndPoint ep) { 323 public override void Listen(EndPoint ep) {
320 httpserver.Listen(ep); 324 httpserver.Listen(ep);
321 } 325 }
322 public override void Close() { 326 public override void Close() {
323 httpserver.Dispose(); 327 httpserver.Dispose();
324 }
325 public void HandleClient(HTTPContext context) {
326 WebSocketPacketStream stream = new WebSocketPacketStream(context);
327 ClientAccepted(new VNCServerConnection(stream, context.Socket));
328 } 328 }
329 } 329 }
330 public interface IZLibCompressor { 330 public interface IZLibCompressor {
331 byte[] Compress(Byte[] data, int offset, int count); 331 byte[] Compress(Byte[] data, int offset, int count);
332 } 332 }