void BeginReceive(SocketAsyncEventArgs e) { if (e.SocketError == SocketError.Success && e.BytesTransferred > 0) { if (!IsOffsetInput) { byte[] data = new byte[e.BytesTransferred]; Buffer.BlockCopy(e.Buffer, e.Offset, data, 0, data.Length); this.BinaryInput?.Invoke(data, e); } else { this.BinaryOffsetInput?.Invoke(e.Buffer, e.Offset, e.BytesTransferred, e); } if (!e.AcceptSocket.ReceiveAsync(e)) { BeginReceive(e); } } else { if (e.AcceptSocket != null && e.AcceptSocket.RemoteEndPoint != null) { string message; try { message = string.Format("User Disconnect :{0}", e.AcceptSocket.RemoteEndPoint.ToString()); } catch (System.NullReferenceException) { message = "User Disconect"; } LogOutEvent(null, LogType.Error, message); MessageInput?.Invoke(message, e, 0); } else { MessageInput?.Invoke("User Disconnect But cannot get Ipaddress", e, 0); } e.AcceptSocket = null; BuffManagers.FreeBuffer(e); SocketAsynPool.Push(e); if (SocketAsynPool.Count == 1) { Accept(); } } }
private void SentMessage() { for (int i = 0; i < InformationContainer.IPAddresses.Count; i++) { Console.WriteLine(InformationContainer.IPAddresses[i]); SentButton.Invoke((MethodInvoker) delegate { SocketClient sc = new SocketClient(); sc.StartClient(InformationContainer.IPAddresses[i], MessageInput.Text); }); } MessageInput.Invoke((MethodInvoker) delegate { MessageInput.Text = ""; }); /* * SentButton.Invoke((MethodInvoker)delegate { * SocketClient.StartClient(InformationContainer.selfIP, MessageInput.Text); * }); */ }
void Disconnect_It(ZYSocketAsyncEventArgs e) { if (MessageInput != null && e.AcceptSocket != null) { string message; try { message = string.Format("User Disconnect :{0}", e.AcceptSocket.RemoteEndPoint.ToString()); } catch (System.ObjectDisposedException) { message = "User Disconnect"; } catch (System.NullReferenceException) { message = "User Disconnect"; } catch (SocketException) { message = "User Disconnect"; } MessageInput.Invoke(message, e, 0); } else { MessageInput?.Invoke("User disconnect but cannot get Ipaddress", e, 0); } e.AcceptSocket = null; if(e.IsInit) Accept(e); }