Mercurial > hg > ucis.core
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 } |