コード例 #1
0
        private void AcceptCallback(IAsyncResult result)
        {
            networkClientInterface connection = new networkClientInterface((Socket)result.AsyncState, result);

            try
            {
                // Start Receive
                connection.networkSocket.BeginReceive(connection.buffer, 0,
                                                      connection.buffer.Length, SocketFlags.None,
                                                      new AsyncCallback(ReceiveCallback), connection);
                // Start new Accept
                serverSocket.BeginAccept(new AsyncCallback(AcceptCallback),
                                         result.AsyncState);
                for (int i = 0; i < 1000; i++)
                {
                    serverSocket.BeginAccept(
                        new AsyncCallback(AcceptCallback), serverSocket);
                }
            }
            catch (SocketException)
            {
                closeConnection(connection);
            }
            catch (Exception e)
            {
                Console.WriteLine("DEBUG: " + e.ToString());
                closeConnection(connection);
            }
        }
コード例 #2
0
        private void AcceptCallback(IAsyncResult result)
        {
            Protega___Server.Classes.CCstData.GetInstance(ApplicationID).Logger.writeInLog(4, Support.LogCategory.OK, Support.LoggerType.SERVER, "Protocol accepted");
            //Wenns klappt, using drum!
            networkClientInterface connection = new networkClientInterface((Socket)result.AsyncState, result);

            try
            {
                // Start Receive
                connection.networkSocket.BeginReceive(connection.buffer, 0,
                                                      connection.buffer.Length, SocketFlags.None,
                                                      new AsyncCallback(ReceiveCallback), connection);
                // Start new Accept
                //serverSocket.BeginAccept(new AsyncCallback(AcceptCallback),
                //    result.AsyncState);
                //for (int i = 0; i < 1000; i++)
                serverSocket.BeginAccept(
                    new AsyncCallback(AcceptCallback), serverSocket);
            }
            catch (SocketException e)
            {
                closeConnection(connection);
            }
            catch (Exception e)
            {
                Console.WriteLine("DEBUG: " + e.ToString());
                closeConnection(connection);
            }
        }
コード例 #3
0
        private void ReceiveCallback(IAsyncResult result)
        {
            networkClientInterface connection = (networkClientInterface)result.AsyncState;

            try
            {
                //bytesread = count of bytes
                int bytesRead = connection.networkSocket.EndReceive(result);
                if (0 != bytesRead)
                {
                    protAnalyseFunction(Encoding.UTF8.GetString(connection.buffer, 0, bytesRead), ref connection);
                    connection.networkSocket.BeginReceive(connection.buffer, 0,
                                                          connection.buffer.Length, SocketFlags.None,
                                                          new AsyncCallback(ReceiveCallback), connection);
                }
                else
                {
                    closeConnection(connection);
                }
            }
            catch (SocketException)
            {
                closeConnection(connection);
            }
            catch (Exception)
            {
                closeConnection(connection);
            }
        }
コード例 #4
0
 public void sendMessage(string message, networkClientInterface client)
 {
     try
     {
         byte[] bytes = Encoding.UTF8.GetBytes(message);
         client.networkSocket.Send(bytes, bytes.Length,
                                   SocketFlags.None);
     }
     catch (Exception)
     {
         closeConnection(client);
     }
 }
コード例 #5
0
 public void sendMessage(string message, networkClientInterface client)
 {
     try
     {
         byte[] bytes = Encoding.Default.GetBytes(message);
         client.networkSocket.Send(bytes, bytes.Length,
                                   SocketFlags.None);
         Classes.CCstData.GetInstance(client.User.Application.ID).Logger.writeInLog(3, Support.LogCategory.OK, Support.LoggerType.SERVER, String.Format("Protocol sending succeeded. Protocol: {0}, Session: {1}, HardwareID: {2}", message, client.SessionID, client.User.ID));
     }
     catch (Exception e)
     {
         Classes.CCstData.GetInstance(client.User.Application.ID).Logger.writeInLog(3, Support.LogCategory.ERROR, Support.LoggerType.SERVER, String.Format("Protocol sending failed. Protocol: {0}, Session: {1}, HardwareID: {2}. Error {3}", message, client.SessionID, client.User.ID, e.Message));
         closeConnection(client);
     }
 }
コード例 #6
0
        private void ReceiveCallback(IAsyncResult result)
        {
            Classes.CCstData.GetInstance(ApplicationID).Logger.writeInLog(2, Support.LogCategory.OK, Support.LoggerType.SERVER, "Protocol received");
            networkClientInterface connection = (networkClientInterface)result.AsyncState;

            try
            {
                //bytesread = count of bytes
                int bytesRead = connection.networkSocket.EndReceive(result);
                if (0 != bytesRead)
                {
                    protAnalyseFunction(ref connection, Encoding.Default.GetString(connection.buffer, 0, bytesRead));
                    //connection.networkSocket.BeginReceive(connection.buffer, 0,
                    //  connection.buffer.Length, SocketFlags.None,
                    //  new AsyncCallback(ReceiveCallback), connection);
                }
                else
                {
                    closeConnection(connection);
                }
            }
            catch (SocketException)
            {
                closeConnection(connection);
                try
                {
                    connection.Dispose();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Could not dispose connection! Error: " + e.Message);
                }
            }
            catch (Exception e)
            {
                closeConnection(connection);
                try
                {
                    connection.Dispose();
                }
                catch (Exception f)
                {
                    Console.WriteLine("Could not dispose connection 2! Error: " + f.Message);
                }
            }
        }
コード例 #7
0
 public void closeConnection(networkClientInterface client)
 {
     client.networkSocket.Close();
 }