0
任何帮助/反馈将不胜感激。我正在开发一个广播客户端接收器,以便它接收来自服务器的数据。客户端异步地发送和接收数据。换句话说,我使用的方法,如socket.BeginReceiveFrom()和socket.BeginSendTo() 然而,我想以某种方式获得服务器的IP地址,但是当我使用方法RemoteEndPoint()获取IP服务器地址我得到错误。部分代码如下所示。c#中的异步广播客户端#
private void Form1_Load(object sender, EventArgs e) {
byteData = msgToSend.ToByte();
clientSocket.BeginSendTo(byteData, 0, byteData.Length, SocketFlags.None, epServer, new AsyncCallback(OnSend), null);
byteData = new byte[1024];
//Start listening to the data asynchronously
clientSocket.BeginReceiveFrom (byteData,0, byteData.Length,SocketFlags.None,ref epServer,new AsyncCallback(OnReceive),null);
}
private void OnReceive(IAsyncResult ar) {
try {
clientSocket.EndReceive(ar);
byteData = new byte[1024];
// HERE MY CODE TO FIND THE IP ADDRESS OF THE SERVER
IPEndPoint ip = (IPEndPoint)epServer.RemoteEndPoint;
MessageBox.Show(Convert.ToString(ip.Address));
//Start listening to receive more data from the user
clientSocket.BeginReceiveFrom(byteData, 0, byteData.Length, SocketFlags.None, ref epServer,new AsyncCallback(OnReceive), null);
} catch (ObjectDisposedException) {
} catch (Exception ex) {
MessageBox.Show(ex.Message, "SGSclient: " + strName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
**您得到了什么错误**? – SLaks
我相信这是你以前的问题的扩展:http://stackoverflow.com/questions/7842443/asynchronous-client-broadcast-receiver/7853129#7853129我在那里提供的答案应该允许你得到服务器的IP – robowahoo
Thx robowahoo,我刚刚在链接中显示的代码中看到了我的错误。而不是EndReceived()方法,我使用EndReceiveFrom()返回结束点。 –