C# 通过广播实现局域网自动连接

两台局域网电脑A B 分别设置isSender 为true和false,就可以实现自动寻找与连接。

using System.Net;
using System.Net.Sockets;
using System.Text;

Console.WriteLine("Hello, World!");

var port = 8056;

var sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//255.255.255.255 
EndPoint sendEndPoint = new IPEndPoint(IPAddress.Broadcast, port);
EndPoint receiveEndPoint = new IPEndPoint(IPAddress.Any, port);

sock.Bind(receiveEndPoint);
var isSender = false;
var sendStr = "Hello World!";
if (isSender)
{
    sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
    var data = Encoding.UTF8.GetBytes(sendStr);

    new Thread(OnReceive).Start();

    while (true)
    {
        sock.SendTo(data, sendEndPoint);
        Thread.Sleep(1000);
    }
}
else
{
    var data = new byte[1024];
    var response = Encoding.UTF8.GetBytes("VR");
    while (true)
    {
        var length = sock.ReceiveFrom(data, ref receiveEndPoint);
        var ipEndPoint = receiveEndPoint as IPEndPoint;
        if (ipEndPoint is not null)
        {
            var str = Encoding.UTF8.GetString(data, 0, length);
            Console.WriteLine($"{ipEndPoint.Address}:{ipEndPoint.Port}> {str}");
            sock.SendTo(response, receiveEndPoint);
        }
    }
}

void OnReceive()
{
    var data = new byte[1024];
    while (true)
    {
        var length = sock.ReceiveFrom(data, ref receiveEndPoint);
        var ipEndPoint = receiveEndPoint as IPEndPoint;
        if (ipEndPoint is not null)
        {
            var str = Encoding.UTF8.GetString(data, 0, length);
            if (str == sendStr)
            {
                continue;
            }
            Console.WriteLine($"{ipEndPoint.Address}:{ipEndPoint.Port}> {str}");
        }
    }
}

相关推荐

  1. C# 通过广播实现局域网自动连接

    2024-03-28 20:20:06       20 阅读
  2. C语言实现广播Echo通信

    2024-03-28 20:20:06       16 阅读
  3. Android BroadcastReceiver广播接收者实现网络连接通知

    2024-03-28 20:20:06       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-28 20:20:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-28 20:20:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-28 20:20:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-28 20:20:06       20 阅读

热门阅读

  1. MySQL全面瓦解备份与恢复

    2024-03-28 20:20:06       19 阅读
  2. 【Linux】文件查看命令(六)

    2024-03-28 20:20:06       18 阅读
  3. C语言经典面试题目(二十七)

    2024-03-28 20:20:06       19 阅读
  4. 【C语言】如何从文件中读取数据?

    2024-03-28 20:20:06       21 阅读
  5. Educational Codeforces Round 163 (Rated for Div. 2)

    2024-03-28 20:20:06       18 阅读
  6. C# var

    2024-03-28 20:20:06       20 阅读
  7. 2024年第四届天府杯B题赛题

    2024-03-28 20:20:06       21 阅读