반사 중 전달 방법 매개 변수 및 등록 이벤트 처리
라이브러리 코드:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Reflection;
using System.Text;
namespace Interface
{
public class Server
{
private Socket _serverSocket;
private byte[] _byteData = new byte[1024];
public event EventHandler OnReceiveEvent;
public void Listener()
{
try
{
_port = ConfigManager.AppSettings["Port"].Value;
// socket, IP、port
_serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
// IP, TCP
var ip = new IPEndPoint(IPAddress.Any, Convert.ToInt32(_port));
//
_serverSocket.Bind(ip);
// client
var sender = new IPEndPoint(IPAddress.Any, 0);
var remote = (EndPoint)(sender);
_serverSocket.BeginReceiveFrom(_byteData, 0, _byteData.Length, SocketFlags.None, ref remote, OnReceive, remote);
}
catch (Exception ex)
{
Log.Error(ex.Message);
}
}
private void OnReceive(IAsyncResult ar)
{
string str = "Hello";
if (OnReceiveEvent != null)
OnReceiveEvent(str, null);
}
}
반사 호출 방법:
public void Listener()
{
try
{
// (dll ), Assembly
Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "Interface.dll");
// , ( + )
Type type = assembly.GetType("Interface.Server");
// ,object , ( +
object instance = assembly.CreateInstance("Interface.Server");
MethodInfo method = type.GetMethod("Listener"); //
EventInfo eventinfo = type.GetEvent("OnReceiveEvent");
//
if (eventinfo != null)
eventinfo.AddEventHandler(instance, new EventHandler(OnReceive));
method.Invoke(instance, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public void OnReceive(object sender, EventArgs e)
{
lbLogs.Items.Add("Server receive: " + sender);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.