2014-09-29 7 views
0

저는 C#에 다소 익숙하며 Modbus-TCP 슬레이브를 만들려고합니다.이벤트를 통해 tcp를 읽습니다.

내가 원하는 것은 TCP 마스터의 데이터를 수신 할 때 이벤트 처리기를 호출하는 것입니다.

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 : 클라이언트가 마스터로부터 데이터를 수신 할 때 이벤트를 발생시키는 방법을 찾고 있습니다. 일반적으로

답변

0

는 C#에서 이벤트는 다음과 같이 작동 : 내가 만약 내가 확인해 볼게 모든

public class ProcessMessage 
{ 
    Client client = new Client(); 
    DisplayMessage msg = new DisplayMessage(); 
    client.MessageArrived += new MessageHandler(msg.DisplayMessage); 
    client.CheckForMessage(); 
} 
+0

먼저 당신에게 답변을 주셔서 대단히 감사합니다 :

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); } } 

코드 이벤트를 연결하는 어떻게 든 내 "새로운"코드에 넣을 수 있지만 어떻게이 "CLient"C# 클래스 "TCPClient"연결할 수 있습니까? 그것은 객체의 객체가 아닙니까? – Davant

+0

코드를 보지 않고도 말하기가 어렵습니다. 그러나'TcpClient'가'event'를 생성하고 싶다면'TcpClient'에서'client' 클래스 코드를 사용하십시오. 그것이 당신을 위해 작동하는 경우 답변으로 표시하십시오. –