套接字访问非公共成员 [英] socket access non public member
问题描述
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的参数。
public static void ReceiveCallback(IAsyncResult iar)
{
//您的代码
< tr>
ReceiveState state =(ReceiveState)iar.AsyncState ;
IPEndPoint rep = state.IPEndPoint;
state.Socket.BeginReceiveFrom(data,0,data.Length,0, ref rep,
new 的AsyncCallback(ReceiveCallback),状态);
//您的代码
}
< td>
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 { get; set; } public IPEndPoint IPEndPoint { get; set; } }
这篇关于套接字访问非公共成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文