Unity 与C#服务器 实现Socket的UDP通信(多客户端)

前言

上一篇简单的介绍了下Unity客户端和服务器的Socket通信,但是还不能实现多个客户端与服务器的通信,所以今天在这边把前面的工程完善一下(使用的是上篇讲到的UdpClient类来实现),实现多个客户端与服务器的udp通信。效果图如下,两个客户端可以向服务器发送消息,然后服务器每隔3秒给“连接上”的客户端发送收到的消息。

内容

思路上一篇已经讲到过了,我们定义两个特殊的字段,来告知服务器,哪些客户端连接上来了,哪些客户端退出了,如下脚本,该脚本客户端服务器各存一份。

namespace Tool {
    class SocketDefine {
        public const int port = 8078;//端口号
        public const string ip = "127.0.0.1";
        public const string udpConnect = "udpConnect";//udp连接
        public const string udpDisconnect = "udpDisconnect";//udp断开连接
    }
}

服务器端

服务器相比之前要做的就是,当接收到udpConnect信息时要记录下发该消息的客户端ip地址,保存在一个字典中,字典不为空的时候,每隔三秒给字典中存在的客户端发送消息(简单测试,目前服务器给各个客户端发的消息就是客户端发给服务器的最新消息)。当收到udpDisconnect消息时,将该客户端从字典中删除即可。同时我们定义一个新的类ClientMessage,用于存放客户端数据。具体代码如下:

using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace Tool {

    public class ClientMessage {
        /// <summary>
        /// 每个客户端的唯一id,即ip地址+端口号
        /// </summary>
        public string clientId;
        /// <summary>
        /// 客户端地址信息
        /// </summary>
        public IPEndPoint clientIPEndPoint;
        /// <summary>
        /// 该客户端发送给服务器的最新消息
        /// </summary>
        public string recieveMessage;

        public ClientMessage(string id, IPEndPoint point, string msg) {
            clientId = id;
            clientIPEndPoint = new IPEndPoint(point.Address, point.Port);
            recieveMessage = msg;
        }
    }

    class UdpManager : SingleClass<UdpM
  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值