Exemplo n.º 1
0
        private void SendAsync( )
        {
            TcpClient client = new TcpClient( Peer.EndPoint.AddressFamily );

            try
            {
                client.SendTimeout = 30;
                client.Connect( Peer.EndPoint );

                using ( BinaryReader NetworkInStream = new BinaryReader( client.GetStream( ) ) )
                using ( BinaryWriter NetworkOutStream = new BinaryWriter( client.GetStream( ) ) )
                {
                    bool sendPeers = Peer.ShouldSendPeers;
                    var header = new Header( sendPeers );
                    NetworkOutStream.Write( header.ToString( ) );
                    NetworkOutStream.Flush( );

                    // Update the statistics.
                    Peer.RegisterEvent( PeerStatistics.EventType.SentInfo );
                    if ( sendPeers )
                    {
                        log.InfoFormat( "Sent {0} peers to {1}", PeerList.Peers.Count, Peer );
                        Peer.RegisterEvent( PeerStatistics.EventType.SentPeerList );
                    }
                }
            }
            catch ( SocketException e ) { log.Info( "Error during outgoing who's-there: " + e ); }
            catch ( IOException e ) { log.Info( "Error during outgoing who's-there: " + e ); }
        }
Exemplo n.º 2
0
        private void SendInvitation( )
        {
            log.InfoFormat( "Outgoing file transfer started: Offering {0} ({1}) to {2}", File.Name, Util.FormatFileSize( File.Length ), Recipient );

            // Send our header with the file information.
            var header = new Header( File );

            if ( Recipient.ShouldSendPeers ) // Send our peer list too, if it's time.
            {
                header.IncludePeerList( );
                Recipient.RegisterEvent( PeerStatistics.EventType.SentPeerList );
            }

            NetworkOutStream.Write( header.ToString( ) );
            NetworkOutStream.Flush( );

            // Wait for the response.
            if ( NetworkInStream.ReadBoolean( ) )
                SendFile( );
            else
            {
                log.DebugFormat( "Outgoing file transfer ({0}) was denied!", File.Name );
                SetState( State.REJECTED );
            }
        }