/// <summary> /// Client connected. /// </summary> private void SocketAsyncEventArgs_Completed(object sender, SocketAsyncEventArgs e) { try { if (e.SocketError != SocketError.Success) {// This will execute the finally block, but skip the AssignAsyncAcceptArgs(). return; } if (e.LastOperation == SocketAsyncOperation.Accept && e.SocketError == SocketError.Success) { SocketCommunicatorEx helper = new SocketCommunicatorEx(_serializer); helper.AssignSocket(e.AcceptSocket, true); helper.Id = PendingClientId; #if Matrix_Diagnostics helper.Monitor.MinimumTracePriority = Monitor.MinimumTracePriority; #endif helper.ConnectedEvent += new SocketCommunicator.HelperUpdateDelegate(helper_ConnectedEvent); helper.DisconnectedEvent += new SocketCommunicator.HelperUpdateDelegate(helper_DisconnectedEvent); helper.MessageReceivedEvent += new SocketCommunicator.MessageUpdateDelegate(helper_MessageReceivedEvent); helper.SendAsyncCompleteEvent += new SocketCommunicator.AsyncMessageSendDelegate(helper_SendAsyncCompleteEvent); _clientsHotSwap[(int)helper.Id] = helper; #if Matrix_Diagnostics Monitor.ReportImportant("Client [" + helper.Id + "] connected."); #endif ServerClientUpdateDelegate delegateInstance = ClientConnectedEvent; if (delegateInstance != null) { delegateInstance(this, helper); } } else { #if Matrix_Diagnostics Monitor.NotImplementedWarning(e.ToString()); #endif } } finally { e.Completed -= new EventHandler <SocketAsyncEventArgs>(SocketAsyncEventArgs_Completed); e.Dispose(); } AssignAsyncAcceptArgs(); }
private void sendArg_Completed(object sender, SocketAsyncEventArgs e) { //Debug.Log(e); Debug.Log(string.Format("send::{2}::sucess:{0},len:{1}", e.SocketError == SocketError.Success, e, id)); if (e.SocketError != SocketError.Success) { Debug.LogWarning(e.ToString()); sendfail++; if (sendfail >= 1) { Debug.Log("SendFail Disconnect"); disconnect(); } } else { sendfail = 0; } }
private void SendTurnAsync_Completed(Socket socket, SocketAsyncEventArgs e) { if (e.SocketError != SocketError.Success) { logger.WriteWarning(String.Format(@"SendTurn Failed\r\nSocket Type {0}:\r\nError: {1}", socket.SocketType.ToString(), e.ToString())); } }