using langguanApi.Model.Entity; using MongoDB.Bson.IO; using System.Net; using System.Net.Sockets; using System.Text; namespace langguanApi.Service { public class GpsService { private GpsHistoryService _service = ServiceLocator.Instance.GetService(); /// /// 缓冲器 /// private byte[] result = new byte[1024]; private int port => 5002; /// /// 启动GPS服务 /// /// public async Task Start() { // 创建本地IP地址和TCP端口号 var ipEndPoint = new IPEndPoint(IPAddress.Any, port); TcpListener listener = new(ipEndPoint); try { listener.Start(); Console.WriteLine($"Waiting for gps connection... port:{port}"); using TcpClient handler = await listener.AcceptTcpClientAsync(); await using NetworkStream stream = handler.GetStream(); int received = await stream.ReadAsync(result); var message = Encoding.UTF8.GetString(result, 0, received); Console.WriteLine($"GPS received: \"{message}\""); } catch (Exception ex) { Console.WriteLine($"GPS error:{ex.Message}"); } } /// /// 发送GPS数据 /// /// /// public async Task Send(string message) { var json = Newtonsoft.Json.JsonConvert.DeserializeObject(message); await _service.AddGpsHistory(json); } } }