Exemple #1
0
        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();
        }
Exemple #2
0
 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;
     }
 }
Exemple #3
0
 private void StartRead(RelationTcp tcp)
 {
     tcp.readTcp.GetStream().BeginRead(tcp.buffer, 0, tcp.buffer.Length, ReadTcp, tcp);
 }