字符串错误修正
This commit is contained in:
commit
155aff76c7
1 file changed
+19
-6
+19
-6
@@ -45,15 +45,18 @@ namespace SunlightAggregationTerminal.Class
|
||||
|
||||
public static TouchSocket.Sockets.TcpClient tcpClient = new TouchSocket.Sockets.TcpClient();
|
||||
|
||||
public static void Configuration(string ip, string Name, string Password, string Terminal)
|
||||
public static async void Configuration(string ip, string Name, string Password, string Terminal)
|
||||
{
|
||||
ServerIP = ip;
|
||||
ServerName = Name;
|
||||
ServerPassword = Password;
|
||||
ServerTerminal = Terminal;
|
||||
|
||||
_ = TcpClient(tcpClient, ServerIP);
|
||||
await TcpClient(tcpClient, ServerIP);
|
||||
}
|
||||
|
||||
// 引入发送锁,彻底解决连续发送导致的并发断连问题
|
||||
private static readonly SemaphoreSlim _sendLock = new SemaphoreSlim(1, 1);
|
||||
public static async void TcpTransmit(string Dat)
|
||||
{
|
||||
var dat = new Person()
|
||||
@@ -65,6 +68,9 @@ namespace SunlightAggregationTerminal.Class
|
||||
Dat = Dat
|
||||
};
|
||||
|
||||
// 使用锁确保同一时间只有一个任务在发送,防止并发写入导致 Socket 异常
|
||||
await _sendLock.WaitAsync();
|
||||
|
||||
//SecureJsonService.CompressEncryptAndSend();
|
||||
//发送字符串数据
|
||||
try
|
||||
@@ -75,6 +81,10 @@ namespace SunlightAggregationTerminal.Class
|
||||
{
|
||||
await Application.Current!.Windows[0].Page!.DisplayAlertAsync("错误", ex.Message.ToString(), "是");
|
||||
}
|
||||
finally
|
||||
{
|
||||
_sendLock.Release(); // 释放锁
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,10 +92,13 @@ namespace SunlightAggregationTerminal.Class
|
||||
{
|
||||
tcpClient.Connecting = (client, e) => { return EasyTask.CompletedTask; };//即将连接到服务器,此时已经创建socket,但是还未建立tcp
|
||||
tcpClient.Connected = (client, e) => {
|
||||
TcpServer.TcpTransmit("\"{\"Command\":\"Log\"}\"");
|
||||
TcpServer.TcpTransmit("{\"Command\":\"Log\"}");
|
||||
return EasyTask.CompletedTask; };//成功连接到服务器
|
||||
tcpClient.Closing = (client, e) => { return EasyTask.CompletedTask; };//即将从服务器断开连接。此处仅主动断开才有效。
|
||||
tcpClient.Closed = (client, e) => { return EasyTask.CompletedTask; };//从服务器断开连接,当连接不成功时不会触发。
|
||||
tcpClient.Closing = (client, e) => {
|
||||
Application.Current!.Windows[0].Page!.DisplayAlertAsync("退出", "即将断开连接", "是");
|
||||
return EasyTask.CompletedTask; };//即将从服务器断开连接。此处仅主动断开才有效。
|
||||
tcpClient.Closed = (client, e) => {
|
||||
Application.Current!.Windows[0].Page!.DisplayAlertAsync("退出", "连接已断开", "是"); return EasyTask.CompletedTask; };//从服务器断开连接,当连接不成功时不会触发。
|
||||
#region Tcp客户端使用Received异步委托接收数据
|
||||
tcpClient.Received = (client, e) =>
|
||||
{
|
||||
@@ -163,7 +176,7 @@ namespace SunlightAggregationTerminal.Class
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception) { }
|
||||
catch (Exception ex) { Application.Current!.Windows[0].Page!.DisplayAlertAsync("", ex.Message.ToString(), "是"); }
|
||||
|
||||
return EasyTask.CompletedTask;
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user