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); }
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); }
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 } }
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); }