Socket使用Udp广播收发数据

使用Udp绑定本机接受数据,同时又可以让Udp客户端发送数据,这样就可以不同过服务器让多态主机进行通信了

 

1、创建套接字,协议类型设为UDP

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

 

2、绑定主机(地址设为IPAddress.Any)

int port = 8888;

IPEndPoint iep = new IPEndPoint(IPAddress.Any, port);

EndPoint ep = iep as EndPoint;

socket.Bind(ep);

 

3、接受数据

while (true)
{
    byte[] buffer = new byte[1024];
    socket.ReceiveFrom(buffer, ref ep);

 

    iep = ep as IPEndPoint;

    //获取本地ipv4的ip

    IPAddress[] hostIp = Dns.GetHostAddresses(Dns.GetHostName());
    myInfomation.hostipv4 = hostIp[hostIp.Length - 1];

    hostipv4 = hostIp[hostIp.Length - 1];

 

    if(iep.Address.ToString() == hostipv4.ToString())

    {

        continue;

    }
    //...

}

 

4、发送数据(发送地址为广播地址IPAddress.Broadcast)

IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, port)

sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);

//设置该scoket实例的发送形式

string request = "你好,TEST SEND!";

//初始化需要发送而的发送数据

byte[] buffer = System.Text.Encoding.Unicode.GetBytes(request);

socket.SendTo(buffer, iep);

 

最后关闭套接字

socket.Close();

 

 

问题:

通过以上代码,虽然可以实现广播的功能(局域网内的所有开启监听的程序都能收到信息),但是在发送消息的时候,自己也会收到自己的信息

在信息接收到的时候可以进行ip判断,如果是自己的ip就过滤掉自己的信息

上面红色代码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值