コード例 #1
0
 void INetworkUser.SendPacket(IPacket packet, IPEndPoint endPoint)
 {
     Server.SendUnconnectedMessage(packet.CreateMessage(Server), endPoint);
 }
コード例 #2
0
        private void btnSend_Click(object sender, EventArgs e)
        {
            var str = txtSend.Text;

            if (String.IsNullOrEmpty(str))
            {
                MessageBox.Show("发送内容不能为空!", Text);
                txtSend.Focus();
                return;
            }

            // 多次发送
            var count = (Int32)numMutilSend.Value;
            var sleep = (Int32)numSleep.Value;
            var ths   = (Int32)numThreads.Value;

            if (count <= 0)
            {
                count = 1;
            }
            if (sleep <= 0)
            {
                sleep = 1;
            }

            SaveConfig();

            var cfg = MessageConfig.Current;

            // 处理换行
            str = str.Replace("\n", "\r\n");
            var buf = cfg.HexSend ? str.ToHex() : str.GetBytes();

            // 构造消息
            var msg = _Packet.CreateMessage(buf);

            buf = msg.ToArray();

            if (_Client != null)
            {
                if (ths <= 1)
                {
                    _Client.SendMulti(buf, count, sleep);
                }
                else
                {
                    Parallel.For(0, ths, n =>
                    {
                        var client         = _Client.Remote.CreateRemote();
                        client.StatSend    = _Client.StatSend;
                        client.StatReceive = _Client.StatReceive;
                        client.SendMulti(buf, count, sleep);
                    });
                }
            }
            else if (_Server != null)
            {
                Task.Run(async() =>
                {
                    for (int i = 0; i < count; i++)
                    {
                        var cs = await _Server.SendAllAsync(buf);
                        XTrace.WriteLine("已向[{0}]个客户端发送[{1}]数据", cs, buf.Length);
                        if (sleep > 0)
                        {
                            await Task.Delay(sleep);
                        }
                    }
                });
            }
        }
コード例 #3
0
 /// <summary>
 /// Sends an <see cref="IPacket"/> to a client using the specified <see cref="IPacket.DeliveryMethod"/>
 /// </summary>
 /// <param name="packet">The <see cref="IPacket"/> to send</param>
 /// <param name="connection">The client's <see cref="NetConnection"/></param>
 public void SendPacket(IPacket packet, NetConnection connection)
 {
     connection.SendMessage(packet.CreateMessage(Server), Network.DeliveryMethod, Network.DefaultChannel);
 }