c# UdpClient 接收方如何获取发送方的IP?
答案:2 悬赏:70 手机版
解决时间 2021-01-17 11:35
- 提问者网友:感性作祟
- 2021-01-16 18:17
c# UdpClient 接收方如何获取发送方的IP?
最佳答案
- 五星知识达人网友:拾荒鲤
- 2021-01-16 19:37
查一下request里面的参数,ip就在里面。追问我的是winform程序,可以获取到吗?追答winform程序,你的服务端是什么写的?追问服务端和客户端是同一个程序,我做的是一个局域网聊天程序,用的
UdpClient追答两个人,每人一个winform,是么?追问是的追答这样的话,你要找到接受socket数据报那段代码,然后找一下socket里面发送端的ip有没有。追问好像没有socket相关代码,直接udp.receive,我是新手不太懂追答receive了一个什么数据结构?追问参数时ref IPEndPoint类型 返回byte数组类型的数据追答如果这个数据是你从另一个winform上推送的数据的的话,那么,说明这个控件没有开这个接口。
那么没关系,你可以用另一个winform上的send程序把ip也send过来,问题就解决了。
UdpClient追答两个人,每人一个winform,是么?追问是的追答这样的话,你要找到接受socket数据报那段代码,然后找一下socket里面发送端的ip有没有。追问好像没有socket相关代码,直接udp.receive,我是新手不太懂追答receive了一个什么数据结构?追问参数时ref IPEndPoint类型 返回byte数组类型的数据追答如果这个数据是你从另一个winform上推送的数据的的话,那么,说明这个控件没有开这个接口。
那么没关系,你可以用另一个winform上的send程序把ip也send过来,问题就解决了。
全部回答
- 1楼网友:独行浪子会拥风
- 2021-01-16 20:49
System.Net.EndPoint Remote;
byte[] recDatas = new byte[1024];
int recv = client.ReceiveFrom(recDatas, ref Remote); //recv表示接收到的数据长度
byte[] realRecDatas = new byte[recv];
Array.Copy(recDatas, 0, realRecDatas, 0, recv); //realRecDatas就是完整的接收到的数据
if (realRecDatas.Length < 2 || 校验什么的 { continue; }//错误数据
//执行你想要的操作
//接收端接收数据的时候可以使用ReceiveFrom
//这样的话,ref Remote就是发送方的的IP地址和端口号。
上面代码写在接收数据线程中的。追问也感谢这位大侠的回答,虽然我不太明白,汗
byte[] recDatas = new byte[1024];
int recv = client.ReceiveFrom(recDatas, ref Remote); //recv表示接收到的数据长度
byte[] realRecDatas = new byte[recv];
Array.Copy(recDatas, 0, realRecDatas, 0, recv); //realRecDatas就是完整的接收到的数据
if (realRecDatas.Length < 2 || 校验什么的 { continue; }//错误数据
//执行你想要的操作
//接收端接收数据的时候可以使用ReceiveFrom
//这样的话,ref Remote就是发送方的的IP地址和端口号。
上面代码写在接收数据线程中的。追问也感谢这位大侠的回答,虽然我不太明白,汗
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯