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()); }
/// <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(); } }