private void Awake() { _state = ORTCPServerState.Disconnected; _events = new Queue <ORTCPEventType>(); _messages = new Queue <string>(); _packets = new Queue <ORSocketPacket>(); if (listenOn == ORTCPServerStartListen.Awake) { StartListening(port, listeners); } }
public void StopListening() { _state = ORTCPServerState.Disconnected; if (_tcpListener == null) { return; } _tcpListener.Stop(); _tcpListener = null; }
private void ReadData() { bool endOfStream = false; while (!endOfStream) { if (socketType == ORTCPSocketType.Text) { String response = null; try { response = _reader.ReadLine(); } catch (Exception e) { e.ToString(); } if (response != null) { _events.Enqueue(ORTCPEventType.DataReceived); _messages.Enqueue(response); } else { endOfStream = true; } } else if (socketType == ORTCPSocketType.Binary) { byte[] bytes = new byte[bufferSize]; int bytesRead = _stream.Read(bytes, 0, bufferSize); if (bytesRead == 0) { endOfStream = true; } else { _events.Enqueue(ORTCPEventType.DataReceived); _packets.Enqueue(new ORSocketPacket(bytes, bytesRead)); } } } _state = ORTCPServerState.Disconnected; _tcpListener.Stop(); _events.Enqueue(ORTCPEventType.Disconnected); }
// Private private void AcceptTcpClientCallback(IAsyncResult ar) { TcpListener tcpListener = (TcpListener)ar.AsyncState; _client = tcpListener.EndAcceptTcpClient(ar); _stream = _client.GetStream(); _reader = new StreamReader(_stream); _writer = new StreamWriter(_stream); _state = ORTCPServerState.Connected; _readThread = new Thread(ReadData); _readThread.IsBackground = true; _readThread.Start(); _events.Enqueue(ORTCPEventType.Connected); }
public void StartListening(int port, GameObject[] listeners) { print("[TCPServer] Start Listening: " + port); if (_state == ORTCPServerState.Listening) { return; } this.port = port; this.listeners = listeners; _state = ORTCPServerState.Listening; _messages.Clear(); _events.Clear(); _tcpListener = new TcpListener(IPAddress.Any, port); _tcpListener.Start(); _tcpListener.BeginAcceptTcpClient(new AsyncCallback(AcceptTcpClientCallback), _tcpListener); }
public void Disconnect() { print("[TCPServer] Server Disconnecting"); _state = ORTCPServerState.Disconnected; try { if (_reader != null) { _reader.Close(); } } catch (Exception e) { e.ToString(); } try { if (_writer != null) { _writer.Close(); } } catch (Exception e) { e.ToString(); } try { if (_client != null) { _client.Close(); } } catch (Exception e) { e.ToString(); } }