Beispiel #1
0
 void DoTest(Guid guid, byte[] sdpRecordGiven, int channelOffset)
 {
     byte[] sdpRecord = new byte[sdpRecordGiven.Length];
     sdpRecordGiven.CopyTo(sdpRecord, 0);
     //
     Assert.AreEqual(0, sdpRecord[channelOffset]);
     InTheHand.Net.Sockets.BluetoothListener lstnr = null;
     try {
         lstnr = new InTheHand.Net.Sockets.BluetoothListener(guid, sdpRecord, channelOffset);
         Assert.AreEqual(sdpRecord, lstnr.ServiceRecord.ToByteArray());
         Assert.AreEqual(sdpRecordGiven, lstnr.ServiceRecord.SourceBytes);
         lstnr.Start();
         int port = lstnr.LocalEndPoint.Port;
         Assert.AreNotEqual(0, port);
         sdpRecord[channelOffset] = checked ((byte)port);
         Assert.AreEqual(sdpRecord, lstnr.ServiceRecord.ToByteArray());
         Assert.AreEqual(sdpRecordGiven, lstnr.ServiceRecord.SourceBytes);
     } finally {
         if (lstnr != null)
         {
             lstnr.Stop();
         }
     }
 }
Beispiel #2
0
        internal void ServerListeningThread()
        {
            try
            {
                serverStarted = false; // just making sure server start is in sync
                try
                {
                    blueListener = new BluetoothListener(mUUID);
                    blueListener.Start();
                    serverStarted = true;
                }
                catch (Exception ex)
                {
                    serverStarted = false;
                    Log.Unhandled(ex);
                    if (noBlockingMode)
                    {
                        Log.BtServer("Bluetooth enhet er ikke støttet, er slått av, eller mangler." + ex.Message, true);
                    }
                    else
                    {
                        Log.ErrorDialog(ex, "Problem oppstod ved start av Bluetooth listener.\nBluetooth enhet er ikke støttet, er slått av, eller mangler. Kan også oppstå når der er problem med programvaren/driver til Bluetooth maskinvaren.", "Bluetooth serveren kan ikke starte.");
                    }
                }

                Log.BtServer("Bluetooth server har startet. Aksepterer tilkoblinger fra alle MScanner mobiler fra versjon " + main.appConfig.blueServerMinimumAcceptedVersion);
                while (true)
                {
                    try
                    {
                        if (!serverStarted)
                            break;

                        if (blueListener.Pending())
                        {
                            using (BluetoothClient client = blueListener.AcceptBluetoothClient())
                            {
                                ClientConnected(client);
                            }
                        }
                    }
                    catch (SocketException ex) { Log.BtServer("Lese/skrive feil: " + ex.Message); break; }
                    catch (Exception ex) { Log.Unhandled(ex); break; }
                }

                if (blueListener != null)
                    blueListener.Stop();

                if (blueListener != null)
                    Log.BtServer("Server avslått");

                serverStarted = false;
            }
            catch (Exception ex)
            {
                Log.BtServer("Generell feil: " + ex.Message);
            }
            finally
            {
                if (blueListener != null)
                {
                    blueListener.Stop();
                    blueListener = null;
                }
                serverStarted = false;
            }
        }
        public override void receive_file(String devicename, String bluid, int not)
        {
            try
            {
                _stopwatch.Start();
                scan_transfer_speed();                

                _bluetooth_guid = Guid.Parse(bluid);
                _bluetooth_listener = new BluetoothListener(_bluetooth_guid);
                _bluetooth_listener.Start();

                _bluetooth_client = _bluetooth_listener.AcceptBluetoothClient();
                _netstream = _bluetooth_client.GetStream();

                _filestream = new FileStream(this.filepath, FileMode.Create, FileAccess.ReadWrite);

                int length;
                _buffer = new byte[65000];
                
                while ((length = _netstream.Read(_buffer, 0, _buffer.Length)) != 0)
                {
                    while (_writing) { }

                    _count_received_bytes += length;

                    _filestream.Write(_buffer, 0, length);
                }

                _timer_ts.Close();
                _stopwatch.Stop();

                int _transferspeed = _count_received_bytes / 1024;
                _message = format_message(_stopwatch.Elapsed, "Transferspeed", _transferspeed.ToString(), "kB/s");
                this.callback.on_transfer_speed_change(_message, this.results);
                this.main_view.text_to_logs(_message);

                _filestream.Dispose();
                _filestream.Close();

                _netstream.Dispose();
                _netstream.Close();

                _bluetooth_client.Dispose();
                _bluetooth_client.Close();

                _bluetooth_listener.Stop();

                _message = format_message(_stopwatch.Elapsed, "File Transfer", "OK", this.filepath);
                this.callback.on_file_received(_message, this.results);
                this.main_view.text_to_logs(_message);
            }
            catch (Exception e)
            {
                append_error_tolog(e, _stopwatch.Elapsed, devicename);
            }
        }