Cosmos/source2/Debug/Cosmos.Debug.Common/DebugConnectorTCPServer.cs

37 lines
No EOL
1.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text;
using System.Threading;
namespace Cosmos.Debug.Common
{
/// <summary>
/// Used for GDB.
/// </summary>
public class DebugConnectorTCPServer : DebugConnectorStream {
public DebugConnectorTCPServer() {
var xTCPListener = new TcpListener(IPAddress.Loopback, 4444);
xTCPListener.Start();
xTCPListener.BeginAcceptTcpClient(new AsyncCallback(DoAcceptTcpClientCallback), xTCPListener);
}
private AutoResetEvent mWaitConnectEvent = new AutoResetEvent(false);
public void DoAcceptTcpClientCallback(IAsyncResult aResult) {
var xListener = (TcpListener) aResult.AsyncState;
var xClient = xListener.EndAcceptTcpClient(aResult);
mWaitConnectEvent.Set();
Start(xClient.GetStream());
}
public override void WaitConnect() {
mWaitConnectEvent.WaitOne();
}
}
}