📄 obexlistener.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 + -