Exemplo n.º 1
0
        public int clientConnect(string hostname, ushort port, ref int socketNumber)
        {
            EthernetClientNet client = NewClient(ref socketNumber);

            if (client != null)
            {
                return(client.connect(hostname, port));
            }

            // all TcpClient sockets used
            setExceptionMessage(new SocketException(10024));
            return(-1);
        }
Exemplo n.º 2
0
        private bool tryGetClient(int socketNumber, out EthernetClientNet client)
        {
            client = null;
            if (socketNumber < 0 || socketNumber >= MAX_CLIENTS)
            {
                return(false);
            }

            client = _clients[socketNumber];
            if (client == null)
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 3
0
        private void listenForClients()
        {
            try
            {
                _tcpListener.Start();

                while (true)
                {
                    TcpClient tcpClient = null;

                    try
                    {
                        //blocks until a client has connected to the server
                        tcpClient = _tcpListener.AcceptTcpClient();

                        int socketNumber = -1;
                        EthernetClientNet ethernetClient = _ethernet.NewClient(ref socketNumber);
                        if (ethernetClient != null)
                        {
                            ethernetClient.connect(tcpClient);

                            lock (_newSocketNumbers)
                                _newSocketNumbers.Enqueue(socketNumber);
                        }
                        else
                        {
                            // all EternetClientNet sockets used, close new TCP client
                            tcpClient.Close();
                        }
                    }
                    catch
                    {
                        return;
                    }
                }
            }
            finally
            {
                // nothing to do for now
            }
        }
Exemplo n.º 4
0
        public EthernetClientNet NewClient(ref int socketNumber)
        {
            lock (_clients)
            {
                for (int i = 0; i < _clients.Length; i++)
                {
                    if (_clients[i] == null || !_clients[i].Allocated)
                    {
                        if (_clients[i] == null)
                        {
                            _clients[i] = new EthernetClientNet();
                        }

                        _clients[i].Allocated = true;
                        socketNumber          = i;
                        return(_clients[i]);
                    }
                }
            }

            socketNumber = -1;
            return(null);
        }