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