|
@@ -1,4 +1,5 @@
|
|
|
-using System;
|
|
|
+using Newtonsoft.Json;
|
|
|
+using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
using System.Data;
|
|
@@ -6,6 +7,7 @@ using System.Drawing;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Net;
|
|
|
+using System.Net.Http;
|
|
|
using System.Net.Sockets;
|
|
|
using System.Text;
|
|
|
using System.Threading;
|
|
@@ -22,7 +24,6 @@ namespace XdCxRhDW.Sender
|
|
|
InitializeComponent();
|
|
|
}
|
|
|
CancellationTokenSource cts1;
|
|
|
- TcpClient client1;
|
|
|
private async void btn1_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
layoutControlItem1.Enabled = false;
|
|
@@ -36,37 +37,15 @@ namespace XdCxRhDW.Sender
|
|
|
var addrArr = txtAddr1.Text.Trim().Replace(":", ":").Split(":".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
|
|
string ip = addrArr[0];
|
|
|
int port = Convert.ToInt32(addrArr[1]);
|
|
|
- S:
|
|
|
- if (string.IsNullOrWhiteSpace(localPort1.Text))
|
|
|
- client1 = new TcpClient();
|
|
|
- else
|
|
|
- client1 = new TcpClient(new IPEndPoint(IPAddress.Any, Convert.ToInt32(localPort1.Text)));
|
|
|
- client1.NoDelay = true;
|
|
|
- client1.SendTimeout = 5000;
|
|
|
- client1.ReceiveTimeout = 5000;
|
|
|
- while (!cts1.IsCancellationRequested)
|
|
|
+ //S:
|
|
|
+ using (var client = new HttpClient())
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- await client1.ConnectAsync(IPAddress.Parse(ip), port);
|
|
|
- break;
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- Log(ex);
|
|
|
- await Task.Delay(5000, cts1.Token);
|
|
|
- }
|
|
|
- }
|
|
|
- Log($"已成功连接到[{txtAddr1.Text}]");
|
|
|
- var lines = File.ReadAllLines("Simulation_Data2023.dat");
|
|
|
- while (!cts1.IsCancellationRequested)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- int idx = 1;
|
|
|
+ var lines = File.ReadAllLines("Simulation_Data2023.dat");
|
|
|
+ List<SendDto> sendDtoList = new List<SendDto>();
|
|
|
foreach (var line in lines)
|
|
|
{
|
|
|
- if (cts1.IsCancellationRequested) break;
|
|
|
if (string.IsNullOrWhiteSpace(line)) continue;
|
|
|
var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
|
|
SendDto dto = new SendDto()
|
|
@@ -83,26 +62,99 @@ namespace XdCxRhDW.Sender
|
|
|
AdjaY = Convert.ToDouble(items[11]),
|
|
|
AdjaZ = Convert.ToDouble(items[12]),
|
|
|
};
|
|
|
- var msg = Newtonsoft.Json.JsonConvert.SerializeObject(dto);
|
|
|
- var data = Encoding.UTF8.GetBytes(msg);
|
|
|
- var dataWithHeader = BitConverter.GetBytes(data.Length).Concat(data).ToArray();
|
|
|
- await client1.GetStream().WriteAsync(dataWithHeader, 0, dataWithHeader.Length);
|
|
|
- Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
|
|
|
- await Task.Delay(3000, cts1.Token);
|
|
|
+ sendDtoList.Add(dto);
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
- catch (InvalidOperationException)
|
|
|
- {
|
|
|
- goto S;
|
|
|
+ string url = string.Format("http://{0}:{1}/Api/Send/SendXdCxRhDW", ip, port);
|
|
|
+ var content = new StringContent(JsonConvert.SerializeObject(sendDtoList), System.Text.Encoding.UTF8, "application/json");
|
|
|
+ var response = await client.PostAsync(url, content);
|
|
|
+ Log($"已向[{txtAddr1.Text}]发送{sendDtoList.Count}条仿真结果");
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
Log($"向[{txtAddr1.Text}]发送结果失败.{ex.Message}");
|
|
|
- await Task.Delay(5000, cts1.Token);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //if (string.IsNullOrWhiteSpace(localPort1.Text))
|
|
|
+ // client1 = new TcpClient();
|
|
|
+ //else
|
|
|
+ // client1 = new TcpClient(new IPEndPoint(IPAddress.Any, Convert.ToInt32(localPort1.Text)));
|
|
|
+ //client1.NoDelay = true;
|
|
|
+ //client1.SendTimeout = 5000;
|
|
|
+ //client1.ReceiveTimeout = 5000;
|
|
|
+ //while (!cts1.IsCancellationRequested)
|
|
|
+ //{
|
|
|
+ // try
|
|
|
+ // {
|
|
|
+ // await client1.ConnectAsync(IPAddress.Parse(ip), port);
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // catch (Exception ex)
|
|
|
+ // {
|
|
|
+ // Log(ex);
|
|
|
+ // await Task.Delay(5000, cts1.Token);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ //Log($"已成功连接到[{txtAddr1.Text}]");
|
|
|
+ //var lines = File.ReadAllLines("Simulation_Data2023.dat");
|
|
|
+ //while (!cts1.IsCancellationRequested)
|
|
|
+ //{
|
|
|
+ // try
|
|
|
+ // {
|
|
|
+ // int idx = 1;
|
|
|
+ // foreach (var line in lines)
|
|
|
+ // {
|
|
|
+ // if (cts1.IsCancellationRequested) break;
|
|
|
+ // if (string.IsNullOrWhiteSpace(line)) continue;
|
|
|
+ // var items = line.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
|
|
|
+ // //SendDto dto = new SendDto()
|
|
|
+ // //{
|
|
|
+ // // SxDto = Convert.ToDouble(items[0]),
|
|
|
+ // // XdDto = Convert.ToDouble(items[1]),
|
|
|
+ // // MainYbDto = Convert.ToDouble(items[2]),
|
|
|
+ // // AdjaYbDto = Convert.ToDouble(items[3]),
|
|
|
+ // // CxRes = Convert.ToDouble(items[4]),
|
|
|
+ // // MainX = Convert.ToDouble(items[7]),
|
|
|
+ // // MainY = Convert.ToDouble(items[8]),
|
|
|
+ // // MainZ = Convert.ToDouble(items[9]),
|
|
|
+ // // AdjaX = Convert.ToDouble(items[10]),
|
|
|
+ // // AdjaY = Convert.ToDouble(items[11]),
|
|
|
+ // // AdjaZ = Convert.ToDouble(items[12]),
|
|
|
+ // //};
|
|
|
+ // SendDto dto = new SendDto()
|
|
|
+ // {
|
|
|
+ // SxDto = Convert.ToDouble(items[0]),
|
|
|
+ // XdDto = Convert.ToDouble(items[1]),
|
|
|
+ // MainYbDto = Convert.ToDouble(items[2]),
|
|
|
+ // AdjaYbDto = Convert.ToDouble(items[3]),
|
|
|
+ // CxRes = Convert.ToDouble(items[4]),
|
|
|
+ // MainX = null,
|
|
|
+ // MainY = null,
|
|
|
+ // MainZ = null,
|
|
|
+ // AdjaX = null,
|
|
|
+ // AdjaY = null,
|
|
|
+ // AdjaZ = null,
|
|
|
+ // };
|
|
|
+ // var msg = Newtonsoft.Json.JsonConvert.SerializeObject(dto);
|
|
|
+ // var data = Encoding.UTF8.GetBytes(msg);
|
|
|
+ // var dataWithHeader = BitConverter.GetBytes(data.Length).Concat(data).ToArray();
|
|
|
+ // await client1.GetStream().WriteAsync(dataWithHeader, 0, dataWithHeader.Length);
|
|
|
+ // Log($"已向[{txtAddr1.Text}]发送第{idx++}条仿真结果");
|
|
|
+ // await Task.Delay(3000, cts1.Token);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // }
|
|
|
+ // catch (InvalidOperationException)
|
|
|
+ // {
|
|
|
+ // goto S;
|
|
|
+ // }
|
|
|
+ // catch (Exception ex)
|
|
|
+ // {
|
|
|
+ // Log($"向[{txtAddr1.Text}]发送结果失败.{ex.Message}");
|
|
|
+ // await Task.Delay(5000, cts1.Token);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -118,7 +170,7 @@ namespace XdCxRhDW.Sender
|
|
|
else
|
|
|
{
|
|
|
cts1?.Cancel();
|
|
|
- client1?.Dispose();
|
|
|
+ // client1?.Dispose();
|
|
|
}
|
|
|
}
|
|
|
|