コード例 #1
0
 public void Connect(IPEndPoint ip)
 {
     try
     {
         ClientSocket.BeginConnect(ip, ClientConnected, ClientSocket);
     }
     catch (Exception e)
     {
         OnErrorHandled?.Invoke(e);
     }
 }
コード例 #2
0
 public void Receive()
 {
     try
     {
         ClientSocket.BeginReceive(ReceivedBuffer, 0, ReceivedBuffer.Length, SocketFlags.None, DataReceived, ClientSocket);
     }
     catch (Exception e)
     {
         OnErrorHandled?.Invoke(e);
     }
 }
コード例 #3
0
 public void Send(byte[] data)
 {
     try
     {
         SentBuffer = data;
         ClientSocket.BeginSend(SentBuffer, 0, SentBuffer.Length, SocketFlags.None, SentData, ClientSocket);
     }
     catch (Exception e)
     {
         OnErrorHandled?.Invoke(e);
     }
 }
コード例 #4
0
 public void Disconnect()
 {
     try
     {
         if (IsRunning)
         {
             ClientSocket.BeginDisconnect(false, ClientDisconnected, ClientSocket);
             _leaveRequest = true;
         }
     }
     catch (Exception e)
     {
         OnErrorHandled?.Invoke(e);
     }
 }
コード例 #5
0
        private void ClientJoined(IAsyncResult ar)
        {
            try
            {
                ServerSocket = (Socket)ar.AsyncState;
                T client = (T)Activator.CreateInstance(typeof(T), ServerSocket.EndAccept(ar));

                client.OnClientDisconnected += () =>
                {
                    OnClientLeaved?.Invoke(client);
                    Clients.Remove(client);
                };

                OnClientJoined?.Invoke(client);
                client.Receive();

                Clients.Add(client);
                AcceptClient();
            }
            catch (Exception e)
            {
                OnErrorHandled?.Invoke(e);
            }
        }