#region Socket连接服务器
		public void Receive(string ip,int port)
        {
            try
            {
                //①创建一个Socket
                var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
                //②连接到指定服务器的指定端口
                socket.Connect(ip, port); //localhost代表本机
 				Scripter.ShowMessage("client:connect to server success!");
 
                //③实现异步接受消息的方法 客户端不断监听消息
                socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
 
                //④接受用户输入,将消息发送给服务器端
                while (true)
                {
                    var message = Console.ReadLine();
                    var outputBuffer = Encoding.UTF8.GetBytes(message);
                    socket.BeginSend(outputBuffer, 0, outputBuffer.Length, SocketFlags.None, null, null);
                }
            }
            catch (Exception ex)
            {
                Scripter.ShowMessage(ex.Message,false);
            }
            finally
            {
                //Console.Read();
            }
 
        }
		#endregion
		
		#region 接收信息
        /// <summary>
        /// 接收信息
        /// </summary>
        /// <param name="ar"></param>
        public void ReceiveMessage(IAsyncResult ar)
        {
            try
            {
                var socket = ar.AsyncState as Socket;
 
                var length = socket.EndReceive(ar);
                //读取出来消息内容
                var message = Encoding.ASCII.GetString(buffer, 0, length);
				// message.tostring();
                 
                //接收下一个消息(因为这是一个递归的调用,所以这样就可以一直接收消息了)
                socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
            }
            catch (Exception ex)
            {
                Scripter.ShowMessage(ex.Message,false);
            }
        }
        #endregion

作者 uoscn