Socket的UDP方式接收完数据后如何获得 对方发来的IP地址和端口,在回发
我 用 UDP接收 对方发来的数据, 如果是TCP方式就得到对方的 client对象,然后 回发 数据回去
但现在是UDP 可能没有连接,所以也得不到client对象,那得到对方的 IP,和端口号怎么获得,怎么回发回去。
接收函数在 ReadCallback里面,在 ReadCallback里,如何获得 对方的IP,端口号在回发给 可户端!代码怎么写应该?
代码如下!!!!!!!!!!!!!!!!!!!!!!
/// <summary>
/// 启动服务器程序,开始监听客户端请求
/// </summary>
public virtual void Start()
{
if (_isRun)
{
throw (new ApplicationException( "TcpSvr已经在运行. "));
}
//缓冲大小
_recvDataBuffer = new byte[DefaultBufferSize];
//初始化socket
_svrSock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
//绑定端口
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint iep = new IPEndPoint(ipAddress, _port);
_svrSock.Bind(iep);
tempRemoteEP = (EndPoint)iep;
_svrSock.BeginReceiveFrom(_recvDataBuffer, 0, _recvDataBuffer.Length, 0, ref tempRemoteEP, new AsyncCallback(ReadCallback), null);
_isRun = true;
}
//接收函数委托(异步回调,本身带线程,不需要使用线程)
public void ReadCallback(IAsyncResult ar)
{
//得到可户端发来的 数据,然后怎么把 在把数据回发给可户端
byte[] ai = _recvDataBuffer;
//byte[] bi = { 1,2,3,4,5,6,76,6,7,254,182,128,7,0};
//这里我想把 可户端发来的数据,在发给可户端应该如何做?获得 IP,端口号怎么获得后回发
//_svrSock.SendTo(bi, rmt);
_svrSock.BeginReceiveFrom(_recvDataBuffer, 0, _recvDataBuffer.Length, 0, ref tempRemoteEP, new AsyncCallback(ReadCallback), null);
}
[解决办法]
up