private void ReadTcp(IAsyncResult ar) { RelationTcp relation = (RelationTcp)ar.AsyncState; if (relation.readSs.CanRead) { int length = 0; try { length = relation.readSs.EndRead(ar); } catch { } if (length > 0) { if (relation.writeSs.CanWrite) { try { relation.writeSs.Write(relation.buffer.Take(length).ToArray()); StartRead(relation); return; } catch { Console.WriteLine("连接中断"); } } } } relation.readSs.Close(3000); relation.writeSs.Close(3000); relation.readTcp.Close(); relation.writeTcp.Close(); }
private void bindTcpClient(TcpClient readClient, TcpClient writeClient) { try { NetworkStream readSs = readClient.GetStream(); NetworkStream writeSs = writeClient.GetStream(); RelationTcp romrRelation = new RelationTcp() { readTcp = readClient, readSs = readSs, writeTcp = writeClient, writeSs = writeSs, buffer = new byte[1452] }; RelationTcp toRelation = new RelationTcp() { readTcp = writeClient, readSs = writeSs, writeTcp = readClient, writeSs = readSs, buffer = new byte[1452] }; StartRead(romrRelation); StartRead(toRelation); } catch { try { readClient.Close(); } catch { } try { writeClient.Close(); } catch { } return; } }
private void StartRead(RelationTcp tcp) { tcp.readTcp.GetStream().BeginRead(tcp.buffer, 0, tcp.buffer.Length, ReadTcp, tcp); }