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 ); } }
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 ); } }