Ejemplo n.º 1
0
        //TCP
        void lifeStream_OnMessageReceived(MessageReader reader)
        {
            //서버로부터 받는 헤더를 읽습니다.
            STCHeader header = (STCHeader)reader.ReadShort();

            switch (header)
            {
            case STCHeader.REQUEST_DEVICE_KIND_TCP:
                sessionId = reader.ReadInt();

                //서버로 Device ID를 보냅니다.
                MessageWriter message = new MessageWriter(CTSHeader.SEND_DEVICE_KIND_TCP);
                message.WriteInt(0);
                lifeStream.Send(message);
                break;

            case STCHeader.SEND_PIPE_CONNECT_TCP:
                try
                {
                    //IPC 파이프의 이름을 받아옵니다.
                    string pipeName = reader.ReadString();
                    pipeClient_stc = new NamedPipeClient_In(pipeName + "_stc", this);     //Server to Client 파이프를 만듬
                    pipeClient_cts = new NamedPipeClient_Out(pipeName + "_cts", this);    //Client to Server 파이프를 만듬

                    //메세지를 보내고 받기 위한 스트림을 생성.
                    pipeStream_Get  = new IPCStream_In(pipeClient_stc, this);
                    pipeStream_Send = new IPCStream_Out(pipeClient_cts, this);

                    //IPC 메세지를 받았을 때 이벤트 등록
                    pipeStream_Get.OnMessageReceived += pipeStream_Get_OnMessageReceived;

                    pipeClient_stc.Start();     //데이터 받기 시작
                    pipeClient_cts.Start();     //데이터 보내기 시작

                    //파이프 연결 성공했다고 보냄
                    pipeStream_Send.Send(new MessageWriter(CTSHeader.SEND_PIPE_CONNECT_COMPLETE));

                    //연결되었다고 해줌.
                    isConnected = true;
                }
                catch (Exception e) { Console.WriteLine(e.Message); }
                break;
            }
        }
Ejemplo n.º 2
0
 public IPCStream_Out(NamedPipeClient_Out client, NUIApp nuiApp)
 {
     _client        = client;
     _client.Error += client_Error;
     this.nuiApp    = nuiApp;
 }