Esempio n. 1
0
        static void Main(string[] args)
        {
            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5555));
                Console.WriteLine("连接服务器成功");
            }
            catch
            {
                Console.WriteLine("连接服务器失败");
                return;
            }

            string    sendstr  = "你好服务端";
            TcpBuffer sendPack = TcpProtocol.Pack(new TcpBuffer(Encoding.Default.GetBytes(sendstr)), 0);

            client.Send(sendPack.bytes);

            byte[] receiveBuffer = new byte[1000];
            client.Receive(receiveBuffer);
            TcpBuffer unpack = TcpProtocol.Unpack(new TcpBuffer(receiveBuffer));

            Console.WriteLine("服务端消息:" + unpack.ToString());
        }
Esempio n. 2
0
            /// <summary>
            /// 处理接收到的客户端数据
            /// </summary>
            private void ProcessReceive()
            {
                if (m_readWriteEventArg.BytesTransferred > 0 &&
                    m_readWriteEventArg.SocketError == SocketError.Success)
                {
                    // 处理接收到的数据
                    m_receiveBuffer.count = m_readWriteEventArg.BytesTransferred;
                    TcpBuffer receivePack = TcpProtocol.Unpack(m_receiveBuffer);
                    if (receivePack == null)
                    {
                        Console.WriteLine("接收客户端数据错误");
                        Close();
                        return;
                    }

                    Console.WriteLine("接收到客户端数据:" + receivePack.ToString());

                    // 填充发送缓冲区
                    string    sendStr    = "客户端你好";
                    TcpBuffer sendPack   = new TcpBuffer(Encoding.Default.GetBytes(sendStr));
                    TcpBuffer sendBuffer = TcpProtocol.Pack(sendPack, 0);
                    if (sendBuffer == null)
                    {
                        Console.WriteLine("数据处理错误");
                        Close();
                        return;
                    }

                    System.Buffer.BlockCopy(sendBuffer.bytes, sendBuffer.offset, m_sendBuffer.bytes, m_sendBuffer.offset, sendBuffer.count);
                    m_sendBuffer.count = sendBuffer.count;

                    // 设置发送缓冲区
                    m_readWriteEventArg.SetBuffer(m_sendBuffer.bytes, m_sendBuffer.offset, m_sendBuffer.count);

                    // 异步发送
                    bool willRaiseEvent = m_socket.SendAsync(m_readWriteEventArg);
                    if (!willRaiseEvent)
                    {
                        ProcessSend();
                    }
                }
                else
                {
                    Close();
                }
            }