mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-20 03:24:33 +08:00
Initial commit.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
using System;
|
||||
using System.Net.Sockets;
|
||||
using System.Threading.Tasks;
|
||||
using MQTTnet.Core.Channel;
|
||||
using MQTTnet.Core.Client;
|
||||
|
||||
namespace MQTTnet.NETFramework
|
||||
{
|
||||
public class MqttTcpChannel : IMqttTransportChannel, IDisposable
|
||||
{
|
||||
private readonly Socket _socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
|
||||
|
||||
public async Task ConnectAsync(MqttClientOptions options)
|
||||
{
|
||||
await Task.Factory.FromAsync(_socket.BeginConnect, _socket.EndConnect, options.Server, options.Port, null);
|
||||
}
|
||||
|
||||
public async Task DisconnectAsync()
|
||||
{
|
||||
await Task.Factory.FromAsync(_socket.BeginDisconnect, _socket.EndDisconnect, true, null);
|
||||
}
|
||||
|
||||
public async Task WriteAsync(byte[] buffer)
|
||||
{
|
||||
if (buffer == null) throw new ArgumentNullException(nameof(buffer));
|
||||
|
||||
await Task.Factory.FromAsync(
|
||||
// ReSharper disable once AssignNullToNotNullAttribute
|
||||
_socket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, null, null),
|
||||
_socket.EndSend);
|
||||
}
|
||||
|
||||
public async Task ReadAsync(byte[] buffer)
|
||||
{
|
||||
await Task.Factory.FromAsync(
|
||||
// ReSharper disable once AssignNullToNotNullAttribute
|
||||
_socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, null, null),
|
||||
_socket.EndReceive);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_socket?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user