|
|
|
@ -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("错误", "不合法的访问地址", "是"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|