添加处理服务器发送信息逻辑

添加tcp逻辑错误的处理
This commit is contained in:
sc committed 2026-05-04 00:46:14 +08:00
commit c6e55c166c
4 files changed
+90 -29

No files matched your search

+76 -19
View File
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;
using TouchSocket.Core;
using TouchSocket.Sockets;
@@ -8,6 +9,15 @@ namespace SunlightAggregationTerminal.Class
{
public class TcpServer
{
public class Person
{
public required string User { get; set; }
public required string Password { get; set; }
public required string IP { get; set; }
public required string Terminal { get; set; }
public required string Dat { get; set; }
}
public static string ServerIP = "";
public static string ServerName = "";
public static string ServerPassword = "";
@@ -23,18 +33,34 @@ namespace SunlightAggregationTerminal.Class
ServerTerminal = Terminal;
_= TcpClient(tcpClient, ServerIP, "7789");
_= TcpClient(tcpClient, ServerIP);
}
public static async void Query(string Dat)
public static async void TcpTransmit(string Dat)
{
var dat = new Person()
{
User = ServerName ,
Password = ServerPassword,
IP = ServerIP,
Terminal = ServerTerminal,
Dat = Dat
};
//SecureJsonService.CompressEncryptAndSend();
//发送字符串数据
await tcpClient.SendAsync("hello");
try
{
await tcpClient.SendAsync(JsonSerializer.Serialize(dat));
}
catch (Exception)
{
await Application.Current!.Windows[0].Page!.DisplayAlertAsync("错误", "连接未启用", "是");
}
}
public static async Task TcpClient(TcpClient tcpClient, string ip, string port)
public static async Task TcpClient(TcpClient tcpClient, string ip)
{
tcpClient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到服务器,此时已经创建socket,但是还未建立tcp
tcpClient.Connected = (client, e) => { return EasyTask.CompletedTask; };//成功连接到服务器
@@ -45,24 +71,55 @@ namespace SunlightAggregationTerminal.Class
{
//从服务器收到信息。但是一般byteBlock和requestInfo会根据适配器呈现不同的值。
var mes = e.Memory.Span.ToString(Encoding.UTF8);
tcpClient.Logger.Info($"客户端接收到信息:{mes}");
var data = JsonSerializer.Deserialize<Dictionary<string, object>>(mes);
if (data != null)
{
//处理服务器发送信息
if (data.TryGetValue("Enterprise", out var value_Enterprise))
{
if (value_Enterprise != null) { App.GlobalData.Enterprise = value_Enterprise.ToString() ?? ""; }
}
if (data.TryGetValue("Department", out var value_Department))
{
if (value_Department != null) { App.GlobalData.Department = value_Department.ToString() ?? ""; }
}
if (data.TryGetValue("Groups", out var value_Groups))
{
if (value_Groups != null) { App.GlobalData.Groups = value_Groups.ToString() ?? ""; }
}
if (data.TryGetValue("UserId", out var value_UserId))
{
if (value_Groups != null) { App.GlobalData.UserId = value_UserId.ToString() ?? ""; }
}
if (data.TryGetValue("UserName", out var value_UserName))
{
if (value_Groups != null) { App.GlobalData.Groups = value_UserName.ToString() ?? ""; }
}
}
return EasyTask.CompletedTask;
};
#endregion
await tcpClient.SetupAsync(new TouchSocketConfig()
.SetRemoteIPHost(ip + ":" + port)
.ConfigurePlugins(a =>
{
})
.ConfigureContainer(a =>
{
}
));
await tcpClient.ConnectAsync();//调用连接,当连接不成功时,会抛出异常。
try
{
await tcpClient.SetupAsync(new TouchSocketConfig()
.SetRemoteIPHost(ip)
.ConfigurePlugins(a =>
{
a.UseReconnection<TcpClient>(options =>
{
options.PollingInterval = TimeSpan.FromSeconds(5);
});
})
.ConfigureContainer(a =>
{
}));
await tcpClient.ConnectAsync();//调用连接,当连接不成功时,会抛出异常。
} catch (Exception)
{
await Application.Current!.Windows[0].Page!.DisplayAlertAsync("错误", "不合法的访问地址", "是");
}
}
}
}