コード例 #1
0
ファイル: frmServer.cs プロジェクト: zyh329/HP-Socket
        HandleResult OnReceive(IntPtr connId, byte[] bytes)
        {
            // 数据到达了
            try
            {
                // 获取附加数据
                IntPtr clientPtr = IntPtr.Zero;
                if (server.GetConnectionExtra(connId, ref clientPtr))
                {
                    // ci 就是accept里传入的附加数据了
                    ClientInfo ci = (ClientInfo)Marshal.PtrToStructure(clientPtr, typeof(ClientInfo));
                    AddMsg(string.Format(" > [{0},OnReceive] -> {1}:{2} ({3} bytes)", ci.ConnId, ci.IpAddress, ci.Port, bytes.Length));
                }
                else
                {
                    AddMsg(string.Format(" > [{0},OnReceive] -> ({1} bytes)", connId, bytes.Length));
                }

                if (server.Send(connId, bytes, bytes.Length))
                {
                    return(HandleResult.Ok);
                }

                return(HandleResult.Error);
            }
            catch (Exception)
            {
                return(HandleResult.Ignore);
            }
        }
コード例 #2
0
        private void buttonSend_Click(object sender, EventArgs e)
        {
            string sendContent = textBoxSendMsg.Text;

            if (sendContent.Length < 1)
            {
                return;
            }
            if (checkedListBoxClientList.Items.Count < 1)
            {
                return;
            }

            try
            {
                // byte[] sendBytes = Encoding.Default.GetBytes(sendContent);
                byte[] sendBytes = Encoding.GetEncoding("UTF-8").GetBytes(sendContent);
                for (int i = 0; i < checkedListBoxClientList.Items.Count; i++)
                {
                    IntPtr connId = (IntPtr)Convert.ToInt32(checkedListBoxClientList.Items[i]);
                    if (checkedListBoxClientList.GetItemChecked(i))
                    {
                        server.Send(connId, sendBytes, sendBytes.Length);
                    }
                }

                textBoxSendMsg.Text = string.Empty;
            }
            catch (Exception exc)
            {
                ShowMSG(string.Format("发送失败:{0}", exc.Message));
            }
        }
コード例 #3
0
ファイル: frmServer.cs プロジェクト: taohaolong/HP-Socket
        HandleResult OnReceive(IntPtr connId, byte[] bytes)
        {
            // 数据到达了
            try
            {
                // 获取附加数据
                var clientInfo = server.GetExtra <ClientInfo>(connId);
                if (clientInfo != null)
                {
                    // clientInfo 就是accept里传入的附加数据了
                    AddMsg(string.Format(" > [{0},OnReceive] -> {1}:{2} ({3} bytes)", clientInfo.ConnId, clientInfo.IpAddress, clientInfo.Port, bytes.Length));
                }
                else
                {
                    AddMsg(string.Format(" > [{0},OnReceive] -> ({1} bytes)", connId, bytes.Length));
                }

                if (server.Send(connId, bytes, bytes.Length))
                {
                    return(HandleResult.Ok);
                }

                return(HandleResult.Error);
            }
            catch (Exception)
            {
                return(HandleResult.Ignore);
            }
        }
コード例 #4
0
        public void Send(Package pkg)
        {
            lock (sendLock)
            {
                if (pkg == null)
                {
                    return;
                }
                try
                {
                    System.IO.MemoryStream           msWBuffer = new System.IO.MemoryStream();
                    Thrift.Transport.TTransport      tp        = new Thrift.Transport.TStreamTransport(null, msWBuffer);
                    Thrift.Protocol.TCompactProtocol cp        = new Thrift.Protocol.TCompactProtocol(tp);

                    switch (pkg.PackType)
                    {
                    case PackType.Command:
                    {
                        cp.WriteI16(PackType.Command);
                        cp.WriteString((string)pkg.Content);
                    }
                    break;

                    case PackType.TaskModel:
                    {
                        cp.WriteI16(PackType.TaskModel);
                        TaskModel task = pkg.Content as TaskModel;
                        task.Write(cp);
                    }
                    break;

                    default:
                        break;
                    }

                    tp.Flush();
                    byte[] buffer = msWBuffer.ToArray();
                    server.Send(pkg.ConnId, buffer, buffer.Length);
                    msWBuffer.Flush();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("发送消息错误:" + ex.Message);
                }
            }
        }
コード例 #5
0
        HandleResult OnReceive(IntPtr connId, IntPtr pData, int length)
        {
            // 数据到达了
            try
            {
                // 从pData中获取字符串
                // string str = Marshal.PtrToStringAnsi(pData, length);

                // intptr转byte[]
                // byte[] bytes = new byte[length];
                // Marshal.Copy(pData, bytes, 0, length);


                // 获取附加数据
                IntPtr clientPtr = IntPtr.Zero;
                if (server.GetConnectionExtra(connId, ref clientPtr))
                {
                    // ci 就是accept里传入的附加数据了
                    ClientInfo ci = (ClientInfo)Marshal.PtrToStructure(clientPtr, typeof(ClientInfo));
                    AddMsg(string.Format(" > [{0},OnReceive] -> {1}:{2} ({3} bytes)", ci.ConnId, ci.IpAddress, ci.Port, length));
                }
                else
                {
                    AddMsg(string.Format(" > [{0},OnReceive] -> ({1} bytes)", connId, length));
                }

                if (server.Send(connId, pData, length))
                {
                    return(HandleResult.Ok);
                }

                return(HandleResult.Error);
            }
            catch (Exception)
            {
                return(HandleResult.Ignore);
            }
        }