基于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复制}