Пример #1
0
        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();
                }
            }
        }
Пример #2
0
        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);
             * });
             */
        }
Пример #3
0
        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);
        }