示例#1
0
        public static void Send(NetData data, NetType t = NetType.TCP)
        {
            if (info != null)
            {
                switch (t)
                {
                case NetType.TCP:
                    info.Send(data.ToBuffer());
                    break;

                case NetType.UDP:
                    NetUdp.Send(data.ToBuffer(), info.ip);
                    break;
                }
            }
            else
            {
                Debug.LogWarning("未连接tcp服务器");
            }
        }
示例#2
0
        public static void SendTo(NetData data, IPEndPoint ip, NetType t = NetType.TCP)
        {
            if (clients.ContainsKey(ip))
            {
                switch (t)
                {
                case NetType.TCP:
                    clients[ip].Send(data.ToBuffer());
                    break;

                case NetType.UDP:
                    NetUdp.Send(data.ToBuffer(), ip);
                    break;
                }
            }
            else
            {
                Debug.LogError(ip + "未与本机建立连接");
            }
        }
示例#3
0
        //public static void Send(NetData data, NetType t = NetType.TCP)
        //{
        //    if (socket != null)
        //    {
        //        byte[] b = data.ToBuffer();
        //        if (LogEnable)
        //            Debug.Log("发送数据:" + b.Length);
        //        {
        //            switch (t)
        //            {
        //                case NetType.TCP:
        //                    foreach (var c in clients.Values)
        //                        c.Send(b);
        //                    break;
        //                case NetType.UDP:
        //                    foreach (var c in clients)
        //                        NetUdp.Send(b, c.Key);
        //                    break;
        //            }
        //        }
        //    }
        //    else
        //    {
        //        Debug.LogError("未开启tcp服务器");
        //    }
        //}
        public static void Send(NetData data, NetType t = NetType.TCP, IPEndPoint ignore = null)
        {
            if (socket != null)
            {
                byte[] b = data.ToBuffer();
                if (LogEnable)
                {
                    Debug.Log("发送数据:" + b.Length);
                }
                {
                    switch (t)
                    {
                    case NetType.TCP:
                        foreach (var c in clients)
                        {
                            if (ignore == null || c.Key.ToString() != ignore.ToString())
                            {
                                c.Value.Send(b);
                            }
                        }
                        break;

                    case NetType.UDP:
                        foreach (var c in clients)
                        {
                            if (ignore == null || c.Key.ToString() != ignore.ToString())
                            {
                                NetUdp.Send(b, c.Key);
                            }
                        }
                        break;
                    }
                }
            }
            else
            {
                Debug.LogError("未开启tcp服务器");
            }
        }
示例#4
0
            public void Receive()
            {
                Thread r = new Thread(() =>
                {
                    try
                    {
                        byte[] d           = new byte[4096];
                        tcp.ReceiveTimeout = Net.Timeout;
                        int l = tcp.Receive(d);
                        while (l > 0)
                        {
                            if (LogEnable)
                            {
                                Debug.Log("收到" + ip + ",tcp数据长度:" + l);
                            }
                            if (l < d.Length)
                            {
                                byte[] _d = new byte[l];
                                Array.Copy(d, 0, _d, 0, l);
                                buffer.Write(_d);
                            }
                            else
                            {
                                buffer.Write(d);
                            }

                            if (buffer.IsRead)
                            {
                                NetData n  = NetData.ReadBuffer(buffer.Read());
                                n.RemoteIP = ip;
                                Net.NetDatas.Add(n);
                            }
                            l = tcp.Receive(d);
                        }
                    }
                    catch (Exception e)
                    {
                        Debug.LogError("tcpInfo:" + ip + ":" + e.Message.ToString());
                    }
                    finally
                    {
                        if (LogEnable)
                        {
                            Debug.Log("tcp接收监听关闭");
                        }
                        Close();
                    }
                });

                r.Start();
                //心跳包线程
                Thread h = new Thread(() =>
                {
                    while (true)
                    {
                        Thread.Sleep(Timeout / 2);
                        if (tcp != null)
                        {
                            NetData n = new NetData(NetMessageType.Heartbeat);
                            n.Write(DateTime.Now.Millisecond);
                            Send(n.ToBuffer());
                        }
                        else
                        {
                            return;
                        }
                    }
                });

                h.Start();
            }
示例#5
0
 public static void Send(NetData data, IPEndPoint ip)
 {
     Send(data.ToBuffer(), ip);
 }