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

2022-12-05 10:25:48 浏览数 (1)

基于udp的局域网内即时通信程序,系统利用UDP协议编写相应的程序实现局域网内部的即时通讯功能,其主要工作机制模仿互联网即时通讯产品的功能,采用UDP协议分别为客户端及服务端完成基础数据配置实现网络消息的相互传递。

系统主要开发平台为window系统,程序设计语言为C#,运行环境为vscode。程序通过开发测试,运行,完成了最初的设计目标,可以用于好友之间通讯

原文地址

一、程序设计

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

主要功能模块:局域网通讯,大众聊天室,用户登录,表情发送,语音发送等等

主要包含技术:UDP协议,C#,vscode

主要包含算法:数据分析计算等

二、效果实现

系统效果

在这里插入图片描述在这里插入图片描述

其他效果省略

核心代码

public class UdpServer

代码语言:txt复制
{
代码语言:txt复制
    public event RecevieMessageHandler RecevieMessage;
代码语言:txt复制
    UdpStatus status = UdpStatus.Close;
代码语言:txt复制
    IPAddress listenIp;
代码语言:txt复制
    int listenPort;
代码语言:txt复制
    UdpClient udpClient;
代码语言:txt复制
    IPEndPoint remotePoint;
代码语言:txt复制
    bool work = true;
代码语言:txt复制
    public UdpServer(IPAddress hostIp, int hostPort)
代码语言:txt复制
    {
代码语言:txt复制
        listenIp = hostIp;
代码语言:txt复制
        listenPort = hostPort;
代码语言:txt复制
        udpClient = new UdpClient(new IPEndPoint(listenIp, listenPort));
代码语言:txt复制
    }
代码语言:txt复制
    public void Start()
代码语言:txt复制
    {
代码语言:txt复制
        if (work)
代码语言:txt复制
        {
代码语言:txt复制
            status = UdpStatus.Open;
代码语言:txt复制
            udpClient.BeginReceive(ReceiveCallback, udpClient);
代码语言:txt复制
        }
代码语言:txt复制
    }
代码语言:txt复制
    private void ReceiveCallback(IAsyncResult ar)
代码语言:txt复制
    {
代码语言:txt复制
        var client = ar.AsyncState as UdpClient;
代码语言:txt复制
        try
代码语言:txt复制
        {
代码语言:txt复制
            byte[] data = client.EndReceive(ar, ref remotePoint);
代码语言:txt复制
            MessageEventArg e = new MessageEventArg();
代码语言:txt复制
            e.message = new Message();
代码语言:txt复制
            e.message.Deserialize(data);
代码语言:txt复制
            e.requestIp = remotePoint.Address.ToString();
代码语言:txt复制
            e.requestPort = remotePoint.Port;
代码语言:txt复制
            if (RecevieMessage != null)
代码语言:txt复制
            {
代码语言:txt复制
                RecevieMessage(this, e);
代码语言:txt复制
            }
代码语言:txt复制
        }
代码语言:txt复制
        catch (Exception)
代码语言:txt复制
        {
代码语言:txt复制
            Stop();
代码语言:txt复制
        }
代码语言:txt复制
        Start();
代码语言:txt复制
    }
代码语言:txt复制
    public void Stop()
代码语言:txt复制
    {
代码语言:txt复制
        work = false;
代码语言:txt复制
        udpClient.Close();
代码语言:txt复制
        status = UdpStatus.Close;
代码语言:txt复制
    }
代码语言:txt复制
}

0 人点赞