System.Net. Sockets.SocketException: 'Запрошенный адрес недействителен в своем контексте. 5C9000000:00001101-0000-1000-8000-00805f9b34fb (0)'
Я написал функцию, которая показывает диалоговое окно, когда другое устройство хочет подключиться к мое устройство.
Вот мой код:
Код: Выделить всё
using InTheHand.Net;
using InTheHand.Net.Bluetooth;
using InTheHand.Net.Sockets;
namespace WinFormsApp1
{
public partial class Bluetooth_Adapter : Form
{
private BluetoothClient client;
private BluetoothDeviceInfo[] devices;
private BluetoothListener listener;
public Bluetooth_Adapter()
{
InitializeComponent();
}
private async void Bluetooth_Adapter_Load(object sender, EventArgs e)
{
await ListenForConnection();
}
private async void btnScan_Click(object sender, EventArgs e)
{
await ScanDevicesAsync();
}
private void btnConnect_Click(object sender, EventArgs e)
{
if (listDevice.SelectedIndex < 0)
{
MessageBox.Show("Please choose 1 device");
return;
}
try
{
var selectedDevice = devices[listDevice.SelectedIndex];
var address = selectedDevice.DeviceAddress;
bool paired = BluetoothSecurity.PairRequest(address, null);
if (!paired)
{
MessageBox.Show("Failed to pair with the device");
return;
}
//
richTextBoxLogs.AppendText($"Attempting to connect to address: {address}\n");
client.Connect(address, BluetoothService.SerialPort);
richTextBoxLogs.AppendText($"Connected Device:\n");
richTextBoxLogs.AppendText($"Name: {selectedDevice.DeviceName}\n");
richTextBoxLogs.AppendText($"Address: {selectedDevice.DeviceAddress}\n");
richTextBoxLogs.AppendText($"Class: {selectedDevice.ClassOfDevice}\n");
richTextBoxLogs.AppendText("--------------------------------------------");
}
catch (Exception ex)
{
MessageBox.Show("Error in connecting: " + ex.Message);
}
}
private void btnDisconnect_Click(object sender, EventArgs e)
{
try
{
if (client != null)
{
client.Close();
richTextBoxLogs.AppendText("\nDevice Disconnected!\n");
richTextBoxLogs.AppendText("--------------------------------------------");
}
else
{
MessageBox.Show("No device is connected.");
}
}
catch (Exception ex)
{
MessageBox.Show("Error in disconnecting: " + ex.Message);
}
}
private async Task ScanDevicesAsync()
{
btnScan.Text = "Scanning...";
btnScan.Enabled = false;
try
{
client = new BluetoothClient();
var deviceTask = Task.Run(() => client.DiscoverDevices(255).ToArray());
devices = await deviceTask;
listDevice.Items.Clear();
foreach (var device in devices)
{
listDevice.Items.Add(device.DeviceName);
}
}
catch (Exception ex)
{
MessageBox.Show("Error in scanning: " + ex.Message);
}
finally
{
btnScan.Enabled = true;
btnScan.Text = "Scan";
}
}
private async Task ListenForConnection()
{
listener = new BluetoothListener(BluetoothService.SerialPort);
listener.Start();
while (true)
{
var bluetoothClient = await Task.Run(() => listener.AcceptBluetoothClient());
var deviceName = bluetoothClient.RemoteMachineName;
var pinCode = GeneratePinCode();
var result = MessageBox.Show($"{deviceName} want to connect. Allow? \nPIN: {pinCode}", "Bluetooth Connection", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
var enteredPinCode = PromptForPinCode();
if (enteredPinCode == pinCode)
{
client = bluetoothClient;
MessageBox.Show("Connected to " + deviceName);
}
else
{
MessageBox.Show("Incorrect PIN. Connection failed.");
bluetoothClient.Close();
}
}
else
{
bluetoothClient.Close();
}
}
}
private string GeneratePinCode()
{
var random = new Random();
return random.Next(1000, 9999).ToString();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... nt-connect
Мобильная версия