private void DoListen() { try { _listener.Start(); do { TcpClient tcpClient = _listener.AcceptTcpClient(); LocalClient localClient = new LocalClient(tcpClient); localClient.OnReceiveObject += ReceiveObject; localClient.Start(); }while (true); } catch (Exception) { }//try }
public void Start() { _client = new LocalClient(); _client.OnConnected += Connected; _client.Start(); }
public static void Main(string[] args) { //TODO //MainnetRules.BypassValidation = true; //MainnetRules.BypassExecuteScript = true; ScriptEngine.BypassVerifySignature = true; using (var storageContext = new MemoryStorageContext()) using (var cacheContext = new CacheContext(storageContext)) { var rules = new Testnet2Rules(cacheContext); using (var blockchainDaemon = new BlockchainDaemon(rules, cacheContext)) using (var knownAddressStorage = new MemoryStorage <NetworkAddressKey, NetworkAddressWithTime>(storageContext)) using (var localClient = new LocalClient(LocalClientType.ComparisonToolTestNet, blockchainDaemon, knownAddressStorage)) { // start the blockchain daemon blockchainDaemon.Start(); // start p2p client localClient.Start(); var projectFolder = Environment.CurrentDirectory; while (projectFolder.Contains(@"\bin")) { projectFolder = Path.GetDirectoryName(projectFolder); } File.Delete(Path.Combine(projectFolder, "Bitcoinj-comparison.log")); var javaProcessStartInfo = new ProcessStartInfo { FileName = @"C:\Program Files\Java\jdk1.7.0_25\bin\java.exe", WorkingDirectory = projectFolder, Arguments = @"-Djava.util.logging.config.file={0}\bitcoinj.log.properties -jar {0}\bitcoinj.jar".Format2(projectFolder), UseShellExecute = false }; var javaProcess = Process.Start(javaProcessStartInfo); javaProcess.WaitForExit((int)TimeSpan.FromMinutes(5).TotalMilliseconds); Console.ReadLine(); } } }
public static void Main(string[] args) { //TODO //MainnetRules.BypassValidation = true; //MainnetRules.BypassExecuteScript = true; ScriptEngine.BypassVerifySignature = true; using (var storageContext = new MemoryStorageContext()) using (var cacheContext = new CacheContext(storageContext)) { var rules = new Testnet2Rules(cacheContext); using (var blockchainDaemon = new BlockchainDaemon(rules, cacheContext)) using (var knownAddressStorage = new MemoryStorage<NetworkAddressKey, NetworkAddressWithTime>(storageContext)) using (var localClient = new LocalClient(LocalClientType.ComparisonToolTestNet, blockchainDaemon, knownAddressStorage)) { // start the blockchain daemon blockchainDaemon.Start(); // start p2p client localClient.Start(); var projectFolder = Environment.CurrentDirectory; while (projectFolder.Contains(@"\bin")) projectFolder = Path.GetDirectoryName(projectFolder); File.Delete(Path.Combine(projectFolder, "Bitcoinj-comparison.log")); var javaProcessStartInfo = new ProcessStartInfo { FileName = @"C:\Program Files\Java\jdk1.7.0_25\bin\java.exe", WorkingDirectory = projectFolder, Arguments = @"-Djava.util.logging.config.file={0}\bitcoinj.log.properties -jar {0}\bitcoinj.jar".Format2(projectFolder), UseShellExecute = false }; var javaProcess = Process.Start(javaProcessStartInfo); javaProcess.WaitForExit((int)TimeSpan.FromMinutes(5).TotalMilliseconds); Console.ReadLine(); } } }
void Recv() { byte[] buffer = new byte[8 * 1024]; while (true) { try { int n = socket.Recv(buffer, 0, buffer.Length, out var end); //Console.WriteLine($"RouteServer:: Recv { Encoding.ASCII.GetString(buffer, 0, n)} remote = {end} "); int idx = 0; if (buffer.TryGet(ref idx, out Header header)) { if (header.mask == Header.MASK) { if (remoteEnd.eq(end)) { if (header.opcode == Header.ResConnect.opcode) { Console.WriteLine("LocalServer connected"); buffer.TryGet(ref idx, out int port); (remoteEnd as IPEndPoint).Port = port; isRunTick = true; } else if (header.opcode == Header.MSG.opcode) { if (buffer.TryGet(ref idx, out int cid)) { if (!clients.TryGetValue(cid, out var client)) { client = new LocalClient(cid, gameEnd, localEnd); client.Start(); clients.Add(cid, client); catckes.Add(cid); } if (client.isRun) { client.tickCount = 0; //Console.WriteLine($"RouteServer::size = {SizeOf<RouteHeader>.value} idx= {idx} cid = {cid}"); buffer.TryGet(idx, out int mask); //Console.WriteLine($"RouteServer:: byffer = {buffer.ToHexStr()}"); client.socket.SendTo(buffer, idx, n - idx, SocketFlags.None, gameEnd); } } } } else { socket.SendTo(buffer, 0, n, SocketFlags.None, remoteEnd); } } } } catch (SocketException se) { Console.WriteLine(se); if (se.SocketErrorCode == SocketError.ConnectionReset) { continue; } if (se.SocketErrorCode == SocketError.Interrupted) { continue; } } catch (Exception e) { Console.WriteLine(e); } } }