C# udp socket 如何获得远程的IP和Port

PhilipGuo 2014-05-30 11:52:14
C# udp socket 编程,接收消息,代码如下:

private void btnReceive_Click(object sender, EventArgs e)
{
socReceive = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint ipendPoint = new IPEndPoint(IPAddress.Parse(ip2), port);
socReceive.Bind(ipendPoint);
thrdReceive = new Thread(new ThreadStart(Receive));
thrdReceive.Start();
}

private void Receive()
{
while (true)
{
byte[] byReceive = new byte[1024];
IPEndPoint receiver = new IPEndPoint(IPAddress.Any, 28001);
EndPoint endPoint = (EndPoint)receiver;
int rev = socReceive.ReceiveFrom(byReceive, ref endPoint);
string strReceive = System.Text.Encoding.Default.GetString(byReceive, 0, rev);
strReceive = string.Format(strTitle + strReceive, receiver.Address.ToString() + ":" + receiver.Port.ToString());
SocketAddress sa = endPoint.Serialize();
//strReceive = string.Format(strTitle + strReceive, socReceive.RemoteEndPoint.ToString());

SetText(strReceive);
}
}

接收到消息后,我想获得发送方的IP和Port,可是用receiver.Address 和 receiver.Port 不行,请问我该怎么获取呢? 谢谢!
...全文
1501 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiaoshiyao 2014-05-30
  • 打赏
  • 举报
回复
gomoku 2014-05-30
  • 打赏
  • 举报
回复
strReceive = string.Format(strTitle + strReceive, (endpoint as IPEndPoint).Address.ToString() + ":" + (endpoint as IPEndPoint).Port.ToString());
PhilipGuo 2014-05-30
  • 打赏
  • 举报
回复
是,一楼是正解,谢谢各位啦!
WM_JAWIN 2014-05-30
  • 打赏
  • 举报
回复
int rev = socReceive.ReceiveFrom(byReceive, ref endPoint); 这个endPoint就是远端信息的啊, ToString()就可以了得到你想要的了
tcmakebest 2014-05-30
  • 打赏
  • 举报
回复
其实已经放到 endPoint 中了,而不是 receiver,楼主懂 ref 是干什么的吗

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧