套接字访问非公共成员 [英] socket access non public member

查看:78
本文介绍了套接字访问非公共成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello
我正在开发Asyncronous套接字编程"UDP"


当你右键点击iar时,我想访问((System.Net.Sockets.OverlappedAsyncResult)(iar))。m_SocketAddress。它是非公开成员。

public static void ReceiveCallback(IAsyncResult iar
{
我想要知道哪个服务器向我发送了消息
















































IPEndPoint(IPAddress.Any,1234);
EndPoint rep =(EndPoint)sender;
int read = remort.EndReceiveFrom(iar,ref rep);
if(read> 0)
{
_Objsock1234.BeginReceiveFrom(data,0,data.Length,0,ref rep,
new AsyncCallback(ReceiveCallback),_ Objsock1234);
}


}


catch(Exception ex)
{
throw ex;
}


这是我

解决方案

>我想访问

您可以使用Reflection执行此操作,但它不会被认为是正确的。私有字段没有记录。

我建议您使用"状态"。 BeginReceiveFrom的参数。













< tr>


















< td>









public static void ReceiveCallback(IAsyncResult iar)
{
//您的代码
ReceiveState state =(ReceiveState)iar.AsyncState ;
IPEndPoint rep = state.IPEndPoint;
state.Socket.BeginReceiveFrom(data,0,data.Length,0, ref rep,
new 的AsyncCallback(ReceiveCallback),状态);
//您的代码
}
private class ReceiveState
{
public Socket Socket { get ; set ; }
public IPEndPoint IPEndPoint { get ; set ; }
}

 Hello
           I am working on Asyncronous socket programing "UDP"


I want to access ((System.Net.Sockets.OverlappedAsyncResult)(iar)).m_SocketAddress when you rightclick on iar. it is a non public member.

public static void ReceiveCallback(IAsyncResult iar)
        {
Here I want to know which server has  send me the message
            try
            {
                lock (_lock)
                {
                   
                    Socket remort = (Socket)iar.AsyncState;
                    IPEndPoint sender = new IPEndPoint(IPAddress.Any , 1234);
                    EndPoint rep = (EndPoint)sender;
                    int read = remort.EndReceiveFrom(iar, ref rep);
                    if (read > 0)
                    {
                                              _Objsock1234.BeginReceiveFrom(data, 0, data.Length, 0, ref rep,
                                         new AsyncCallback(ReceiveCallback), _Objsock1234);
                    }

                }
            }
            catch (Exception ex)
            {
                throw ex;
            }


It's Me

解决方案

> I want to access

You could do this with Reflection, but it would not be considered proper.  Private fields are undocumented.

I suggest that you use the "state" parameter of BeginReceiveFrom for this.

    public static void ReceiveCallback(IAsyncResult iar)  
    {  
        // Your code here  
 
        ReceiveState state = (ReceiveState)iar.AsyncState;  
        IPEndPoint rep = state.IPEndPoint;  
 
        state.Socket.BeginReceiveFrom(data, 0, data.Length, 0, ref rep,  
            new AsyncCallback(ReceiveCallback), state);  
 
        // Your code here  
    }  
 
    private class ReceiveState  
    {  
        public Socket Socket { getset; }  
        public IPEndPoint IPEndPoint { getset; }  
    } 


这篇关于套接字访问非公共成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆