Bootstrap

BS1051-基于C#+udp协议实现局域网内即时通信程序

基于udp的局域网内即时通信程序,系统利用UDP协议编写相应的程序实现局域网内部的即时通讯功能,其主要工作机制模仿互联网即时通讯产品的功能,采用UDP协议分别为客户端及服务端完成基础数据配置实现网络消息的相互传递。
系统主要开发平台为window系统,程序设计语言为C#,运行环境为vscode。程序通过开发测试,运行,完成了最初的设计目标,可以用于好友之间通讯

原文地址

一、程序设计

本次基于udp的局域网内即时通信程序,主要内容涉及:

主要功能模块:局域网通讯,大众聊天室,用户登录,表情发送,语音发送等等
主要包含技术:UDP协议,C#,vscode
主要包含算法:数据分析计算等

二、效果实现

系统效果

在这里插入图片描述

其他效果省略

核心代码

public class UdpServer
{
public event RecevieMessageHandler RecevieMessage;
UdpStatus status = UdpStatus.Close;
IPAddress listenIp;
int listenPort;
UdpClient udpClient;
IPEndPoint remotePoint;
bool work = true;

    public UdpServer(IPAddress hostIp, int hostPort)
    {
        listenIp = hostIp;
        listenPort = hostPort;
        udpClient = new UdpClient(new IPEndPoint(listenIp, listenPort));
    }

    public void Start()
    {
        if (work)
        {
            status = UdpStatus.Open;
            udpClient.BeginReceive(ReceiveCallback, udpClient);
        }
    }

    private void ReceiveCallback(IAsyncResult ar)
    {
        var client = ar.AsyncState as UdpClient;
        try
        {
            byte[] data = client.EndReceive(ar, ref remotePoint);
            MessageEventArg e = new MessageEventArg();
            e.message = new Message();
            e.message.Deserialize(data);
            e.requestIp = remotePoint.Address.ToString();
            e.requestPort = remotePoint.Port;

            if (RecevieMessage != null)
            {
                RecevieMessage(this, e);
            }
        }
        catch (Exception)
        {
            Stop();
        }
        Start();
    }

    public void Stop()
    {
        work = false;
        udpClient.Close();
        status = UdpStatus.Close;
    }
}
;