⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 obexlistener.cs

📁 蓝牙传输控件,用于蓝牙文件上传和下载。芯片只要选用crs
💻 CS
字号:
using System;
using System.Net;
using System.Net.Sockets;
using bluetoothX;

namespace bluetoothX
{
	public class ObexListener
	{
		private static readonly byte[] serviceRecord = new byte[] {
		0x35,0x25,0x09,0x00,0x01,0x35,0x03,0x19,
		0x11,0x05,0x09,0x00,0x04,0x35,0x11,0x35,
		0x03,0x19,0x01,0x00,0x35,0x05,0x19,0x00,
		0x03,0x08,0x00,0x35,0x03,0x19,0x00,0x08,
		0x09,0x03,0x03,0x35,0x02,0x08,0xFF};

		private ObexTransport transport;
		private BluetoothListener bListener;
		private TcpListener tListener;

		private bool listening = false;

		public ObexListener() : this(ObexTransport.Bluetooth)
		{
		}

		public ObexListener(ObexTransport transport)
		{
			switch(transport)
			{
				case ObexTransport.Bluetooth:
					bListener = new BluetoothListener(BluetoothService.ObexObjectPush,serviceRecord,26);
					bListener.ServiceClass = ServiceClass.ObjectTransfer;
					break;

        		case ObexTransport.Tcp:
        			tListener = new TcpListener(650);
        			break;
				default:
					throw new ArgumentException("Invalid transport specified");
			}
			this.transport = transport;
		}

		public bool IsListening
		{
			get
			{
				return listening;
			}
		}

		public void Start()
		{
            		switch (transport)
            		{
                		case ObexTransport.Bluetooth:
                    		bListener.Start();
                    		break;

                		case ObexTransport.Tcp:
                    		tListener.Start();
                    		break;
            		}
			
			listening = true;
		}

		public void Stop()
		{
			listening = false;
	            	switch (transport)
	            	{
	                	case ObexTransport.Bluetooth:
	                    	bListener.Stop();
	                    	break;
	
	                	case ObexTransport.Tcp:
	                    	tListener.Stop();
	                    	break;
	            }
		}

		public void Close()
		{
			if(listening)
			{
				this.Stop();
			}
		}

		public ObexListenerContext GetContext()
		{
			if(!listening)
			{
				throw new InvalidOperationException("Listener not started");
			}

			try
			{
				Socket s;

                switch (transport)
                {
                    case ObexTransport.Bluetooth:
                        s = bListener.AcceptSocket();
                        break;

                    default:
                        s = tListener.AcceptSocket();
                        break;
                }

				return new ObexListenerContext(s);
			}
			catch
			{
				return null;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -