示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ipaddress"></param>
        /// <param name="port"></param>
        /// <param name="sendData"></param>
        /// <param name="messageID">if occur error, use this messageID as returndata</param>
        /// <param name="handlerReturnData"></param>
        public void SendMsg(string ipaddress, int port, string sendData, string messageID, HandlerReturnData handlerReturnData)
        {
            m_maxNumberAcceptedClients.WaitOne();
            AsyncClientToken asyncClientToken = m_readWritePool.PopOrNew();

            asyncClientToken.HandlerReturnData = handlerReturnData;
            asyncClientToken.IP        = ipaddress;
            asyncClientToken.Port      = port;
            asyncClientToken.MessageID = messageID;
            int sendcount = Encoding.UTF8.GetBytes(sendData, 0, sendData.Length, asyncClientToken.Buffer, 0);

            asyncClientToken.Datasize = sendcount;

            try
            {
                IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(asyncClientToken.IP), asyncClientToken.Port);
                asyncClientToken.Socket.BeginSendTo(asyncClientToken.Buffer, 0, asyncClientToken.Datasize, SocketFlags.None, ipe, new AsyncCallback(SendCallback), asyncClientToken);
            }
            catch (Exception ex)
            {
                CloseOneInstance(asyncClientToken);
                if (LogTool != null)
                {
                    LogTool.Log(ex.Message + ex.StackTrace);
                }
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="ipaddress"></param>
        /// <param name="port"></param>
        /// <param name="sendData"></param>
        /// <param name="messageID">if occur error, use this messageID as returndata</param>
        /// <param name="handlerReturnData"></param>
        public void SendMsg(string ipaddress, int port, string sendData, string messageID, HandlerReturnData handlerReturnData)
        {
            IPEndPoint ipe          = new IPEndPoint(IPAddress.Parse(ipaddress), port);
            Socket     clientSocket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

            m_maxNumberAcceptedClients.WaitOne();
            AsyncClientToken asyncClientToken = m_readWritePool.PopOrNew();

            asyncClientToken.HandlerReturnData = handlerReturnData;
            asyncClientToken.Socket            = clientSocket;
            asyncClientToken.MessageID         = messageID;
            int sendcount = Encoding.UTF8.GetBytes(sendData, 0, sendData.Length, asyncClientToken.Buffer, 0);

            asyncClientToken.Datasize = sendcount;


            try
            {
                clientSocket.BeginConnect(ipe, new AsyncCallback(ConnectCallback), asyncClientToken);
            }
            catch (Exception ex)
            {
                CloseOneInstance(asyncClientToken);
                if (LogTool != null)
                {
                    LogTool.Log(ex.Message + ex.StackTrace);
                }
            }
        }