コード例 #1
0
        void TEBPProvider_ReceivedRequest(TrivialEntityBasedProtocol.Request req)
        {
            if (req is FileTransferRequest)
            {
                Console.WriteLine("Got FileTransferRequest");

                AES fileAES = new AES();
                fileAES.Generate();

                Transfer transfer = Transfer.GetForRequest(req as FileTransferRequest);

                DataConnection = SingleTransferReceiver.GetServer();
                DataConnection.ParentConnection = this;

                FileTransferResponse resp = new FileTransferResponse()
                {
                    AesKey = fileAES.aesKey,
                    AesIv = fileAES.aesIV,
                    DataConnectionAddress = DataConnection.Address,
                    DataConnectionPort = SingleTransferReceiver.Port
                };
                req.Respond(resp);

                if (DataConnection.GetConnection())
                {
                    DataConnection.BeginReceiving(transfer, fileAES);
                }
                else
                {
                    DataConnection.Dispose();
                    DataConnection = null;
                }
            }
            else
            {
                req.Decline();
            }
        }
コード例 #2
0
 public void RaiseFileTransferStarted(SingleTransferReceiver srv)
 {
     UIThreadSyncContext.Send(new System.Threading.SendOrPostCallback(state =>
     {
         if (FileTransferStarted != null)
             FileTransferStarted(srv);
     }), null);
 }