@@ -10,7 +10,7 @@ namespace BootstrapBlazor.Server.Components.Samples.Sockets;
1010/// <summary>
1111/// 接收电文示例
1212/// </summary>
13- public partial class ManualReceives : IDisposable
13+ public partial class ManualReceives
1414{
1515 [ Inject , NotNull ]
1616 private ITcpSocketFactory ? TcpSocketFactory { get ; set ; }
@@ -19,7 +19,7 @@ public partial class ManualReceives : IDisposable
1919
2020 private List < ConsoleMessageItem > _items = [ ] ;
2121
22- private readonly IPEndPoint _serverEndPoint = new ( IPAddress . Loopback , 8800 ) ;
22+ private readonly IPEndPoint _serverEndPoint = new ( IPAddress . Loopback , 8810 ) ;
2323
2424 /// <summary>
2525 /// <inheritdoc/>
@@ -29,11 +29,11 @@ protected override void OnInitialized()
2929 base . OnInitialized ( ) ;
3030
3131 // 从服务中获取 Socket 实例
32- _client = TcpSocketFactory . GetOrCreate ( "demo-receive" , options =>
32+ _client = TcpSocketFactory . GetOrCreate ( "demo-manual- receive" , options =>
3333 {
3434 options . LocalEndPoint = new IPEndPoint ( IPAddress . Loopback , 0 ) ;
35+ options . IsAutoReceive = false ;
3536 } ) ;
36- _client . ReceivedCallBack += OnReceivedAsync ;
3737 }
3838
3939 private async Task OnConnectAsync ( )
@@ -58,40 +58,27 @@ private Task OnClear()
5858 return Task . CompletedTask ;
5959 }
6060
61- private async ValueTask OnReceivedAsync ( ReadOnlyMemory < byte > data )
61+ private async Task OnSendAsync ( )
6262 {
63- // 将数据显示为十六进制字符串
64- var payload = System . Text . Encoding . UTF8 . GetString ( data . Span ) ;
65- _items . Add ( new ConsoleMessageItem
63+ if ( _client is { IsConnected : true } )
6664 {
67- Message = $ "接收到来自站点的数据为 { payload } "
68- } ) ;
65+ // 准备通讯数据
66+ var data = new byte [ 12 ] ;
67+ var result = await _client . SendAsync ( new byte [ 2 ] { 0x01 , 0x02 } , CancellationToken . None ) ;
68+ var state = result ? "成功" : "失败" ;
6969
70- // 保持队列中最大数量为 50
71- if ( _items . Count > 50 )
72- {
73- _items . RemoveAt ( 0 ) ;
74- }
75- await InvokeAsync ( StateHasChanged ) ;
76- }
70+ // 记录日志
71+ _items . Add ( new ConsoleMessageItem ( )
72+ {
73+ Message = $ "{ DateTime . Now } : 发送数据 { _client . LocalEndPoint } - { _serverEndPoint } Data { BitConverter . ToString ( data ) } { state } "
74+ } ) ;
7775
78- private void Dispose ( bool disposing )
79- {
80- if ( disposing )
81- {
82- if ( _client is { IsConnected : true } )
76+ var buffer = await _client . ReceiveAsync ( CancellationToken . None ) ;
77+ _items . Add ( new ConsoleMessageItem ( )
8378 {
84- _client . ReceivedCallBack -= OnReceivedAsync ;
85- }
79+ Message = $ "{ DateTime . Now } : 接收数据 { _client . LocalEndPoint } - { _serverEndPoint } Data { BitConverter . ToString ( buffer . ToArray ( ) ) } 成功",
80+ Color = Color . Success
81+ } ) ;
8682 }
8783 }
88-
89- /// <summary>
90- /// <inheritdoc/>
91- /// </summary>
92- public void Dispose ( )
93- {
94- Dispose ( true ) ;
95- GC . SuppressFinalize ( this ) ;
96- }
9784}
0 commit comments