首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过事件读取tcp

通过事件读取tcp
EN

Stack Overflow用户
提问于 2014-09-29 08:50:14
回答 1查看 867关注 0票数 0

我对C#有点陌生,我正在尝试创建一个Modbus-TCP从服务器。

当我从TCP主接收数据时,我要做的就是调用一个事件处理程序。

代码语言:javascript
复制
namespace Mark_II.Device
{
    class Slave_TCP : mSlave
    {
        short trans_ID;
        byte[] Respond;       
        byte[] MasterMessage;
        TcpClient Client;
        NetworkStream stream;


        public Slave_TCP(String IP, int Port)
        {
            Client = new TcpClient(IP, Port);

            stream = Client.GetStream();
            // insert "call event handler" here<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
        }


        private void client_OnReceiveData(object sender, SerialDataReceivedEventArgs e)
        {  
            byte[] message = new byte[Client.ReceiveBufferSize];                       
            stream.Read(message, 0, message.Length);

        }
    }
}

我一直在四处张望,但什么也找不到.请帮帮我。

tl;dr:当我的客户从主程序接收数据时,我正在寻找一种引发事件的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-30 18:49:09

一般来说,C#中的事件是这样工作的:

代码语言:javascript
复制
public delegate void MessageHandler(string message);

public class Client
{
   public event MessageHandler MessageArrived;

   public void CheckForMessage() //logic to check if message is received
   {
     //other code to check for message
      if(MessageArrived != null)
         MessageArrived("message received");
   }
}

public class DisplayMessage
{
  public void DisplayMessage(string message)
  {
    Console.WriteLine("Message: {0}", message);
  }
}

连接事件的代码:

代码语言:javascript
复制
 public class ProcessMessage
 {
    Client client = new Client();
    DisplayMessage msg = new DisplayMessage();
    client.MessageArrived += new MessageHandler(msg.DisplayMessage);
    client.CheckForMessage();
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26095895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档