Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 读取从特定端口C接收的数据#_Javascript_C#_Asp.net_Serial Port_Port - Fatal编程技术网

Javascript 读取从特定端口C接收的数据#

Javascript 读取从特定端口C接收的数据#,javascript,c#,asp.net,serial-port,port,Javascript,C#,Asp.net,Serial Port,Port,iam使用“traccar”读取从端口5027接收的数据并将其插入数据库,我想知道是否有可能使用C#读取从特定端口(在我的示例5027中)接收的数据 感谢您的帮助如果我在您使用HTTP或HTTPS协议接收消息时理解正确,您可以使用HTTPListener作为服务器,或者使用HTTPClient-If-client。在这种情况下,当使用不同的协议进行通信时,您可以使用较低级别的api:TcpListener/TcpClient 要获得更完整的答案,请解释,您希望从外部服务器读取数据吗?为此,您需要

iam使用“traccar”读取从端口5027接收的数据并将其插入数据库,我想知道是否有可能使用C#读取从特定端口(在我的示例5027中)接收的数据


感谢您的帮助

如果我在您使用
HTTP
HTTPS
协议接收消息时理解正确,您可以使用
HTTPListener
作为服务器,或者使用
HTTPClient
-If-client。在这种情况下,当使用不同的协议进行通信时,您可以使用较低级别的api:
TcpListener
/
TcpClient

要获得更完整的答案,请解释,您希望从外部服务器读取数据吗?为此,您需要连接到其端口5027? 或者您想成为一个服务器,监听端口并处理接收到的数据

参考资料:


    • 希望这对您有所帮助

          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Text;
          using System.Threading.Tasks;
      
          namespace MyTcpListener
          {
              interface ITcpListener : IDisposable
              {
                  event ConnectionCreatedHandler OnConnectionCreated;
                  event DataReceivingHandler OnDataReceiving;
                  event DataReceivedHandler OnDataReceived;
                  event ResponseSendingHandler OnResponseSending;
                  event ResponseSentHandler OnResponseSent;
                  event ErrorHandler OnError;
      
                  object Tag { get; set; }
      
                  void StartListening(string host, int port);
                  void Dispose();
              }
          }
      
      
          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Text;
          using System.Threading;
          using System.Net;
          using System.Net.Sockets;
      
          namespace MyTcpListener
          {
              public delegate void ConnectionCreatedHandler(object sender, TcpConnectionEventArgs e);
              public delegate void DataReceivingHandler(object sender, TcpConnectionEventArgs e);
              public delegate void DataReceivedHandler(object sender, TcpConnectionEventArgs e);
              public delegate void ResponseSendingHandler(object sender, TcpConnectionEventArgs e);
              public delegate void ResponseSentHandler(object sender, TcpConnectionEventArgs e);
              public delegate void DataSendingHandler(object sender, TcpConnectionEventArgs e);
              public delegate void DataSentHandler(object sender, TcpConnectionEventArgs e);
              public delegate void ErrorHandler(object sender, string message);
      
              class TcpListener : ITcpListener
              {
                  public event ConnectionCreatedHandler OnConnectionCreated;
                  public event DataReceivingHandler OnDataReceiving;
                  public event DataReceivedHandler OnDataReceived;
                  public event ResponseSendingHandler OnResponseSending;
                  public event ResponseSentHandler OnResponseSent;
                  public event ErrorHandler OnError;
      
                  public ManualResetEvent processCompleted = new ManualResetEvent(false);
      
                  public HubTcpListener()
                  {
      
                  }
                  public object Tag { get; set; }
      
                  public void StartListening(string host, int port) 
                  {
                      int bufferSize = 1024 * 1024 * 1;
                      byte[] buffer = new byte[bufferSize];
      
                      bool keppAlive = true;
                      TcpConnectionEventArgs tcpServerConnectionEventArgs = new TcpConnectionEventArgs();
                      IPAddress[] ipAddreses = Dns.GetHostAddresses(host);
                      IPEndPoint ipEndpoint = new IPEndPoint(ipAddreses[0], port);
                      Socket listenerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                      try
                      {
                          listenerSocket.Bind(ipEndpoint);
                          listenerSocket.Listen(500);
      
                          tcpServerConnectionEventArgs.HandlerSocket = listenerSocket;
                          tcpServerConnectionEventArgs.ReceivedTime = DateTime.Now;
      
                          if (OnConnectionCreated != null) 
                          {
                              OnConnectionCreated(this, tcpServerConnectionEventArgs);
                          }
      
                          while (keppAlive) 
                          {
                              try
                              {
                                  processCompleted.Reset();
                                  listenerSocket.BeginAccept(new AsyncCallback(HandleAcceptCallBack), listenerSocket);
                                  processCompleted.WaitOne();
                              }
                              catch (Exception ex)
                              {
                                  if (OnError != null) 
                                  {
                                      OnError(this, ex.Message);
                                  }
                              }
                          }
                      }
                      catch (Exception)
                      {
                      throw;
                      }
                  }
                  private void HandleAcceptCallBack(IAsyncResult asyndResult) 
                  {
                      processCompleted.Set();
                      Socket listener = (Socket)asyndResult.AsyncState;
                      Socket handler = listener.EndAccept(asyndResult);
                      StateObject stateObject = new StateObject() { clientSocket = handler };
      
                      TcpConnectionEventArgs tcpServerConnectionEventArgs = new TcpConnectionEventArgs();
                      tcpServerConnectionEventArgs.ReceivedTime = DateTime.Now;
                      tcpServerConnectionEventArgs.HandlerSocket = handler;
                      tcpServerConnectionEventArgs.ReceivedData = "";
      
                      if (OnDataReceiving != null)
                      {
                          OnDataReceiving(this, tcpServerConnectionEventArgs);
                      }
                      handler.BeginReceive(stateObject.buffer, 0, StateObject.bufferSize, 0, new AsyncCallback(HandleReadCallBack), stateObject);
                  }
                  private void HandleReadCallBack(IAsyncResult asyncResult) 
                  {
      
                      string contents = string.Empty;
                      StateObject state = (StateObject)asyncResult.AsyncState;
                      Socket handler = state.clientSocket;
                      int bytesLength = handler.EndReceive(asyncResult);
      
                      TcpConnectionEventArgs tcpServerConnectionEventArgs = new TcpConnectionEventArgs();
                      tcpServerConnectionEventArgs.ReceivedTime = DateTime.Now;
                      tcpServerConnectionEventArgs.HandlerSocket = handler;
      
                      if (bytesLength > 0)
                      {
                          state.stringBuilder.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesLength));
                          contents = state.stringBuilder.ToString();
                          tcpServerConnectionEventArgs.ReceivedData = contents; ;
                          if (OnDataReceived != null)
                          {
                              OnDataReceived(this, tcpServerConnectionEventArgs);
                          }
                          Send(handler, contents);
                      }
                      else 
                      {
                          handler.BeginReceive(state.buffer, 0, StateObject.bufferSize, 0, new AsyncCallback(HandleReadCallBack), state);
                      }
                  }
                  private void Send(Socket handler, string data) 
                  {
                      TcpConnectionEventArgs tcpServerConnectionEventArgs = new TcpConnectionEventArgs();
                      tcpServerConnectionEventArgs.ReceivedTime = DateTime.Now;
                      tcpServerConnectionEventArgs.HandlerSocket = handler;
                      tcpServerConnectionEventArgs.ReceivedData = data;
      
                      if (OnResponseSending != null)
                      {
                          OnResponseSending(this, tcpServerConnectionEventArgs);
                          data = tcpServerConnectionEventArgs.ReceivedData;
                      }
      
                      byte[] bytes = Encoding.ASCII.GetBytes(data);
                      handler.BeginSend(bytes, 0, bytes.Length, 0, new AsyncCallback(HandleSendCallBack), handler);
                  }
                  private void HandleSendCallBack(IAsyncResult asyncResult) 
                  {
                      try
                      {
                          Socket handler = (Socket)asyncResult.AsyncState;
                          int bytesSendLength = handler.EndSend(asyncResult);
      
                          TcpConnectionEventArgs tcpServerConnectionEventArgs = new TcpConnectionEventArgs();
                          tcpServerConnectionEventArgs.ReceivedTime = DateTime.Now;
                          tcpServerConnectionEventArgs.HandlerSocket = handler;
      
                          if (OnResponseSent != null)
                          {
                              OnResponseSent(this, tcpServerConnectionEventArgs);
                          }
                          handler.Shutdown(SocketShutdown.Both);
                          handler.Close();
                      }
                      catch (Exception)
                      {
                          throw;
                      }
                  }
                  public void Dispose()
                  {
                      Dispose(true);
                      GC.SuppressFinalize(this);
                  }
                  protected virtual void Dispose(bool disposing)
                  {
                      if (disposing)
                      {
                          if (this.processCompleted != null)
                          {
                              this.processCompleted.Dispose();
                          }
                      }
                  }
              }
          }
      
      
      
          using System;
          using System.Collections.Generic;
          using System.Linq;
          using System.Text;
          using System.Net;
          using System.Net.Sockets;
      
          namespace MyTcpListener
          {
              public class TcpConnectionEventArgs : EventArgs
              {
                  public Socket HandlerSocket { get; set; }
                  public DateTime ReceivedTime { get; set; }
                  public string ReceivedData { get; set; }
                  public long TransactionID { get; set; }
                  public long ConnectorID { get; set; }
              }
          }
      
          namespace MyTcpListener
          {
              public class StateObject
              {
                  public Socket clientSocket = null;
                  public const int bufferSize = (1024 * 1024) * 1; // 1 MB
                  public byte[] buffer = new byte[bufferSize];
                  public StringBuilder stringBuilder = new StringBuilder();
              }
          }
      

      嗨,谢谢你的回复。在您的代码中,您实例化了一个名为“StateObject”的对象。名为“StateObject”的类在哪里?很抱歉,很抱歉,我忘了发布那个类。请获取下面的代码。命名空间MyTcpListener{public class StateObject{public Socket clientSocket=null;public const int bufferSize=(1024*1024)*1;//1 MB public byte[]buffer=new byte[bufferSize];public StringBuilder StringBuilder=new StringBuilder();}