コード例 #1
0
    void Start()
    {
        _appStateBroker = AppStateBroker.Instance;
        _server         = ORTCPMultiServer.Instance;

        _tcpMessageRecieved =
            Observable
            .FromEvent <ORTCPMultiServer.TCPServerMessageRecivedEvent, ORTCPEventParams>
            (
                h => p => h(p),
                h => ORTCPMultiServer.Instance.OnTCPMessageRecived += h,
                h => ORTCPMultiServer.Instance.OnTCPMessageRecived -= h
            );

        _tcpMessageRecieved
        .Subscribe(OnMessageRecived)
        .AddTo(gameObject);

        _appStateBroker
        .ComOutGoingStream
        .Subscribe(msg =>
        {
            Debug.Log(msg);
            _server.SendAllClientsMessage(msg);
            GameManager.StatusMsgBackup = msg;
        })
        .AddTo(gameObject);
    }
コード例 #2
0
    public static ORTCPClient CreateInstance(string name, TcpClient tcpClient, ORTCPMultiServer serverDelegate)     // this is only used by the server
    {
        GameObject  go     = new GameObject(name);
        ORTCPClient client = go.AddComponent <ORTCPClient>();

        client.SetTcpClient(tcpClient);
        client.serverDelegate = serverDelegate;
        client.verbose        = false;
        return(client);
    }
コード例 #3
0
 private void Awake()
 {
     if (_instance != null && _instance != this)
     {
         Destroy(this.gameObject);
     }
     else
     {
         _instance = this;
     }
 }
コード例 #4
0
    public static ORTCPClient CreateInstance(string name, TcpClient tcpClient, ORTCPMultiServer serverDelegate, int port)     // this is only used by the server
    {
        ORTCPClient client = new ORTCPClient();

        client.port = port;
        client.SetTcpClient(tcpClient);
        client.serverDelegate = serverDelegate;
        client.verbose        = false;
        client.Start();
        return(client);
    }
コード例 #5
0
    private void Awake()
    {
        if (_instance != null && _instance != this)
        {
            Destroy(this.gameObject);
        }
        else
        {
            _instance = this;
        }
        //debug binding
        Observable.EveryUpdate()
        .Select(_ => GameManager.TargetObject_External)
        .DistinctUntilChanged()
        .Subscribe(_ => verbose = (GameManager.TargetObject_External & TargetObject.TCP) == TargetObject.TCP)
        .AddTo(gameObject);

        _listenning     = false;
        _newConnections = new Queue <NewConnection>();
        _clients        = new Dictionary <int, ORTCPClient>();
        StartListening();

        Observable
        .EveryUpdate()
        .Where(_ => _newConnections.Count > 0)
        .Subscribe(_ =>
        {
            //Debug.Log(Thread.CurrentThread.ManagedThreadId);
            NewConnection newConnection = _newConnections.Dequeue();
            ORTCPClient client          = ORTCPClient.CreateInstance("ORMultiServerClient", newConnection.tcpClient, this);


            int clientID = SaveClient(client);
            ORTCPEventParams eventParams = new ORTCPEventParams();
            eventParams.eventType        = ORTCPEventType.Connected;
            eventParams.client           = client;
            eventParams.clientID         = clientID;
            eventParams.socket           = newConnection.tcpClient;
            if (verbose)
            {
                print("[TCPServer] New client connected");
            }
        });
    }
コード例 #6
0
        static void Main(string[] args)
        {
            regKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
            regKey.SetValue("TestApplication", Assembly.GetExecutingAssembly().Location.ToString());

            StartTargetApplication();

            Port   = GetPort();
            Server = new ORTCPMultiServer();
            Server.Start(Port);

            _tcpMessageRecieved =
                Observable
                .FromEvent <ORTCPMultiServer.TCPServerMessageRecivedEvent, ORTCPEventParams>
                    (h => (p) => h(p),
                    h => Server.OnTCPMessageRecived += h,
                    h => Server.OnTCPMessageRecived -= h);

            _tcpMessageRecieved.Subscribe(DoCommnad);
            Console.Read();
        }
コード例 #7
0
 public ORTCPMultiServer()
 {
     _instance = this;
 }