示例#1
0
        private void Connect(IPEndPoint endPoint, int inputDeviceNumber, INetworkChatCodec codec)
        {
            var receiver = (IAudioReceiver) new UdpAudioReceiver(endPoint.Port);

            player    = new NetworkAudioPlayer(codec, receiver);
            connected = true;
        }
示例#2
0
 internal WasapiLoopbackRecorder(INetworkChatCodec c)
 {
     deviceNumber = -1;
     codec = c;
     waveIn = new WasapiLoopbackCapture();
     convertionStream = new AcmStream(new WaveFormat(waveIn.WaveFormat.SampleRate, 16, waveIn.WaveFormat.Channels), codec.RecordFormat);
 }
示例#3
0
		public DirectSoundPlayer(INetworkChatCodec c)
			: base(c)
		{
			waveProvider = new BufferedWaveProvider(codec.RecordFormat);
			wavePlayer = new DirectSoundOut();
			wavePlayer.Init(waveProvider);
		}
示例#4
0
 internal WasapiLoopbackRecorder(INetworkChatCodec c)
 {
     deviceNumber     = -1;
     codec            = c;
     waveIn           = new WasapiLoopbackCapture();
     convertionStream = new AcmStream(new WaveFormat(waveIn.WaveFormat.SampleRate, 16, waveIn.WaveFormat.Channels), codec.RecordFormat);
 }
示例#5
0
        void Connect(IPEndPoint endPoint, int inputDeviceNumber, INetworkChatCodec codec)
        {
            source = new WaveIn();
            source.BufferMilliseconds = 50;
            source.DeviceNumber       = inputDeviceNumber;
            source.WaveFormat         = codec.RecordFormat;
            source.DataAvailable     += waveIn_DataAvailable;
            source.StartRecording();

            sendVoice = new UdpClient();
            sendVoice.EnableBroadcast = true;
            receiveVoice = new UdpClient();

            receiveVoice.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
            receiveVoice.Client.Bind(endPoint);

            sendVoice.Connect(endPoint);

            waveOut      = new WaveOut();
            waveProvider = new BufferedWaveProvider(codec.RecordFormat);
            waveOut.Init(waveProvider);
            waveOut.Play();

            connected = true;
            var state = new ListenerThreadState {
                Codec = codec, EndPoint = endPoint
            };

            ThreadPool.QueueUserWorkItem(ListenerThread, state);
        }
示例#6
0
        /// <summary>
        /// 语音捕获类
        /// </summary>
        /// <param name="quality">1为低质量、2为一般默认、3为高质量</param>
        /// <param name="bufferTime"></param>
        public AudioCapture(int quality, int bufferTime = 50)
        {
            switch (quality)
            {
            case 1:
                _speexCodec = new NarrowBandSpeexCodec();
                break;

            case 3:
                _speexCodec = new UltraWideBandSpeexCodec();
                break;

            case 2:
            default:
                _speexCodec = new WideBandSpeexCodec();
                break;
            }

            _waveProvider = new BufferedWaveProvider(_speexCodec.RecordFormat);

            _waveIn = new WaveIn();
            _waveIn.BufferMilliseconds = bufferTime;
            _waveIn.DeviceNumber       = 0;
            _waveIn.WaveFormat         = _speexCodec.RecordFormat;
            _waveIn.DataAvailable     += _waveIn_DataAvailable;
        }
示例#7
0
        private void connectLiveAudio(int inputDeviceNumber, INetworkChatCodec codec)
        {
            var sender = new SocketIoAudioSender(socket);

            audioSender = new NetworkAudioSender(codec, inputDeviceNumber, sender);
            connected   = true;
        }
示例#8
0
 public DirectSoundPlayer(INetworkChatCodec c)
     : base(c)
 {
     waveProvider = new BufferedWaveProvider(codec.RecordFormat);
     wavePlayer   = new DirectSoundOut();
     wavePlayer.Init(waveProvider);
 }
示例#9
0
        private void Connect(IPEndPoint endPoint, int inputDeviceNumber, INetworkChatCodec codec)
        {
            waveIn = new WaveIn();
            waveIn.BufferMilliseconds = 50;
            waveIn.DeviceNumber = inputDeviceNumber;
            waveIn.WaveFormat = codec.RecordFormat;
            waveIn.DataAvailable += waveIn_DataAvailable;
            waveIn.StartRecording();

            udpSender = new UdpClient();
            udpListener = new UdpClient();

            // To allow us to talk to ourselves for test purposes:
            // http://stackoverflow.com/questions/687868/sending-and-receiving-udp-packets-between-two-programs-on-the-same-computer
            udpListener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            udpListener.Client.Bind(endPoint);

            udpSender.Connect(endPoint);

            waveOut = new WaveOut();
            waveProvider = new BufferedWaveProvider(codec.RecordFormat);
            waveOut.Init(waveProvider);
            waveOut.Play();

            connected = true;
            var state = new ListenerThreadState { Codec = codec, EndPoint = endPoint };
            ThreadPool.QueueUserWorkItem(ListenerThread, state);
        }
        /// <summary>
        /// 连接到对方设备端
        /// </summary>
        /// <param name="endPoint"></param>
        /// <param name="inputDeviceNumber"></param>
        /// <param name="codec"></param>
        private void Connect(IPEndPoint endPoint, int inputDeviceNumber, INetworkChatCodec codec)
        {
            waveIn = new WaveIn();
            waveIn.BufferMilliseconds = 50;
            waveIn.DeviceNumber       = inputDeviceNumber;
            waveIn.WaveFormat         = codec.RecordFormat;
            waveIn.DataAvailable     += waveIn_DataAvailable;
            waveIn.StartRecording();

            udpSender   = new UdpClient();
            udpListener = new UdpClient();

            // To allow us to talk to ourselves for test purposes:
            // http://stackoverflow.com/questions/687868/sending-and-receiving-udp-packets-between-two-programs-on-the-same-computer
            udpListener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            udpListener.Client.Bind(endPoint);

            udpSender.Connect(endPoint);

            waveOut      = new WaveOut();
            waveProvider = new BufferedWaveProvider(codec.RecordFormat);
            waveOut.Init(waveProvider);
            waveOut.Play();

            connected = true;
            var state = new ListenerThreadState {
                Codec = codec, EndPoint = endPoint
            };

            ThreadPool.QueueUserWorkItem(ListenerThread, state);
        }
        private void Connect(IPEndPoint endPoint, int inputDeviceNumber, INetworkChatCodec codec)
        {
            try
            {
                waveIn = new WaveIn
                {
                    BufferMilliseconds = 100,
                    DeviceNumber       = inputDeviceNumber,
                    WaveFormat         = codec.RecordFormat
                };

                if (callingService.EncryptedCallSender || callingService.EncryptedCallReceiver)
                {
                    waveIn.DataAvailable += WaveIn_DataAvailableEncrypted;
                }
                else
                {
                    waveIn.DataAvailable += WaveIn_DataAvailable;
                }
                waveIn.StartRecording();
            }
            catch (Exception)
            {
                return;
            }

            udpSender = new UdpClient();
            //to wywalilo
            udpSender.Connect(endPoint);

            connected = true;
        }
示例#12
0
 internal WaveInRecorder(INetworkChatCodec c, int devIndex = 0)
 {
     deviceNumber = devIndex;
     codec        = c;
     waveIn       = new WaveIn()
     {
         DeviceNumber = deviceNumber, WaveFormat = codec.RecordFormat
     };
 }
示例#13
0
        static void Main(string[] args)
        {
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(client), port);

            selectedCodec = new G722ChatCodec();
            Connect(endPoint, 0, selectedCodec);
            Console.WriteLine(String.Format("Connected to: {0}:{1}", client, port));
            Console.ReadLine();
            Disconnect();
        }
示例#14
0
 public void Start(IPEndPoint endPoint, IPEndPoint srcPoint)
 {
     if (!endSignal)
     {
         PopulateCodecs();
         int inputDeviceNumber = 0;
         selectedCodec = codecItems[0].Codec;
         Connect(endPoint, srcPoint, inputDeviceNumber, selectedCodec);
     }
 }
示例#15
0
        public GoToMeetingWindow(IRCSocket rcSocket, Window mainWindow)
        {
            InitializeComponent();
            _rcSocket   = rcSocket;
            _mainWindow = mainWindow;
            _rcSocket.MessageReceived += _rcSocket_MessageReceived;
            _selectedCodec             = new MicrosoftAdpcmChatCodec();
            _isAudioConnected          = true;

            Chats = new ObservableCollection <Chat>();
        }
示例#16
0
 static void Connect(IPEndPoint endPoint, int inputDeviceNumber, INetworkChatCodec codec)
 {
     waveIn = new WaveInEvent();
     waveIn.BufferMilliseconds = 50;
     //Microphone.DeviceNumber = inputDeviceNumber; // or just set default device in windows
     waveIn.WaveFormat     = codec.RecordFormat;
     waveIn.DataAvailable += waveIn_DataAvailable;
     udpSender             = new UdpClient();
     udpSender.Connect(endPoint);
     waveIn.StartRecording();
 }
示例#17
0
        public NetworkAudioPlayer(INetworkChatCodec codec, IAudioReceiver receiver)
        {
            this.codec    = codec;
            this.receiver = receiver;
            receiver.OnReceived(OnDataReceived);

            waveOut      = new WaveOut();
            waveProvider = new BufferedWaveProvider(codec.RecordFormat);
            waveOut.Init(waveProvider);
            waveOut.Play();
        }
示例#18
0
 public void Start()
 {
     if (!endSignal)
     {
         PopulateCodecs();
         IPEndPoint endPoint          = new IPEndPoint(IPAddress.Any, 17720);
         int        inputDeviceNumber = 0;
         selectedCodec = codecItems[0].Codec;
         Connect(endPoint, inputDeviceNumber, selectedCodec);
     }
 }
示例#19
0
 public NetworkAudioSender(INetworkChatCodec codec, int inputDeviceNumber, IAudioSender audioSender)
 {
     this.codec                = codec;
     this.audioSender          = audioSender;
     waveIn                    = new WaveIn();
     waveIn.BufferMilliseconds = 50;
     waveIn.DeviceNumber       = inputDeviceNumber;
     waveIn.WaveFormat         = codec.RecordFormat;
     waveIn.DataAvailable     += OnAudioCaptured;
     waveIn.StartRecording();
 }
示例#20
0
        public NetworkAudioSender(INetworkChatCodec codec, int inputDeviceNumber, IAudioSender audioSender)
        {
            Codec       = codec;
            AudioSender = audioSender;

            WaveIn = new WaveInEvent
            {
                BufferMilliseconds = 50, DeviceNumber = inputDeviceNumber, WaveFormat = codec.RecordFormat
            };

            WaveIn.DataAvailable += OnAudioCaptured;
            WaveIn.StartRecording();
        }
        private void Connect(IPEndPoint endPoint, int inputDeviceNumber, INetworkChatCodec codec)
        {
            var receiver = (comboBoxProtocol.SelectedIndex == 0)
                ? (IAudioReceiver) new UdpAudioReceiver(endPoint.Port)
                : new TcpAudioReceiver(endPoint.Port);
            var sender = (comboBoxProtocol.SelectedIndex == 0)
                ? (IAudioSender) new UdpAudioSender(endPoint)
                : new TcpAudioSender(endPoint);

            player      = new NetworkAudioPlayer(codec, receiver);
            audioSender = new NetworkAudioSender(codec, inputDeviceNumber, sender);
            connected   = true;
        }
        public NetworkAudioSender(INetworkChatCodec codec, int inputDeviceNumber, IAudioSender audioSender)
        {
            var devices = new MMDeviceEnumerator().EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToList();

            this.codec       = codec;
            this.audioSender = audioSender;
            //waveIn = new WasapiCapture(devices[0], true, 1);
            waveIn = new WaveInEvent();
            waveIn.BufferMilliseconds = 50;
            waveIn.DeviceNumber       = inputDeviceNumber;
            waveIn.WaveFormat         = codec.RecordFormat;
            waveIn.DataAvailable     += OnAudioCaptured;
            waveIn.StartRecording();
        }
示例#23
0
 private void buttonStartStreaming_Click(object sender, EventArgs e)
 {
     if (!connected)
     {
         IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(textBoxIPAddress.Text), int.Parse(textBoxPort.Text));
         int inputDeviceNumber = comboBoxInputDevices.SelectedIndex;
         selectedCodec = ((CodecComboItem)comboBoxCodecs.SelectedItem).Codec;
         Connect(endPoint, inputDeviceNumber,selectedCodec);
         buttonStartStreaming.Text = "Disconnect";
     }
     else
     {
         Disconnect();
         buttonStartStreaming.Text = "Connect";
     }
 }
 /// <summary>
 /// 开始网络音频
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void buttonStartStreaming_Click(object sender, EventArgs e)
 {
     if (!connected)
     {
         IPEndPoint endPoint          = new IPEndPoint(IPAddress.Parse(textBoxIPAddress.Text), int.Parse(textBoxPort.Text));
         int        inputDeviceNumber = comboBoxInputDevices.SelectedIndex;
         selectedCodec = ((CodecComboItem)comboBoxCodecs.SelectedItem).Codec;
         Connect(endPoint, inputDeviceNumber, selectedCodec);
         buttonStartStreaming.Text = "Disconnect";
     }
     else
     {
         Disconnect();
         buttonStartStreaming.Text = "Connect";
     }
 }
 private void buttonStartStreaming_Click(object sender, EventArgs e)
 {
     if (!connected)
     {
         IPEndPoint endPoint          = new IPEndPoint(Dns.GetHostAddresses(Config.ConnectionStringEDP).Where(x => x.AddressFamily == AddressFamily.InterNetwork).FirstOrDefault(), 15123);
         int        inputDeviceNumber = comboBoxInputDevices.SelectedIndex;
         selectedCodec = ((CodecComboItem)comboBoxCodecs.SelectedItem).Codec;
         Connect(endPoint, inputDeviceNumber, selectedCodec);
         buttonStartStreaming.Content = "Disconnect";
     }
     else
     {
         Disconnect();
         buttonStartStreaming.Content = "Connect";
     }
 }
示例#26
0
        static void Connect(IPEndPoint endPoint, int inputDeviceNumber, INetworkChatCodec codec)
        {
            udpListener = new UdpClient();
            // if running both from the same computer: (otherwise comment these next two out)
            udpListener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            udpListener.Client.Bind(endPoint);

            waveOut      = new DirectSoundOut();
            waveProvider = new BufferedWaveProvider(codec.RecordFormat);
            waveOut.Init(waveProvider);
            waveOut.Play();

            var state = new ListenerThreadState {
                Codec = codec, EndPoint = endPoint
            };

            ThreadPool.QueueUserWorkItem(ListenerThread, state);
        }
示例#27
0
        private void ServerConnect(IPEndPoint endPoint, int inputDeviceNumber, INetworkChatCodec codec)
        {
            // input handling
            this.waveIn = new NAudio.Wave.WaveIn()
            {
                BufferMilliseconds = 50,
                DeviceNumber       = inputDeviceNumber,
                WaveFormat         = codec.RecordFormat
            };

            this.waveIn.DataAvailable += SoundDataAvailable;
            this.waveIn.StartRecording();

            this.udpSender = new UdpClient();
            this.udpSender.Connect(endPoint);

            this.vconnected = true;
        }
示例#28
0
        private void ClientConnect(IPEndPoint endPoint, INetworkChatCodec codec)
        {
            this.udpListener = new UdpClient();
            this.udpListener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            this.udpListener.Client.Bind(endPoint);

            this.waveOut      = new WaveOut();
            this.waveProvider = new BufferedWaveProvider(codec.RecordFormat);
            this.waveOut.Init(waveProvider);
            this.waveOut.Play();

            this.connected = true;
            var state = new AudioListenerThreadData {
                Codec = codec, EndPoint = endPoint
            };

            ThreadPool.QueueUserWorkItem(this.ListenerProcessing, state);
        }
        private void buttonStartStreaming_Click_1(object sender, EventArgs e)
        {
            if (!connected)
            {
                if (textBoxPort.Text == "")
                {
                    MessageBox.Show("Please provide correct port");
                    textBoxPort.Text = "0000";
                }

                string portS = textBoxPort.Text;
                int    port  = Int32.Parse(portS);

                if (port > 65535)
                {
                    textBoxPort.Text = "65535";
                }
                else
                {
                    try
                    {
                        IPEndPoint endPoint          = new IPEndPoint(IPAddress.Parse(textBoxIPAddress.Text), int.Parse(textBoxPort.Text));
                        int        inputDeviceNumber = comboBoxInputDevices.SelectedIndex;
                        selectedCodec = ((CodecComboItem)comboBoxCodecs.SelectedItem).Codec;
                        Connect(endPoint, inputDeviceNumber, selectedCodec);
                        buttonStartStreaming.Text = "Disconnect";
                    }
                    catch
                    {
                        MessageBox.Show("Please provide correct IP address");
                    }
                }
            }
            else
            {
                Disconnect();
                buttonStartStreaming.Text = "Connect";
            }
        }
示例#30
0
        /// <summary>
        /// 语音播放器
        /// </summary>
        /// <param name="quality"></param>
        /// <param name="bufferTime"></param>
        public AudioPlayer(int quality, int bufferTime = 50)
        {
            switch (quality)
            {
            case 1:
                _speexCodec = new NarrowBandSpeexCodec();
                break;

            case 3:
                _speexCodec = new UltraWideBandSpeexCodec();
                break;

            case 2:
            default:
                _speexCodec = new WideBandSpeexCodec();
                break;
            }

            _waveProvider = new BufferedWaveProvider(_speexCodec.RecordFormat);

            _waveOut = new WaveOut();
            _waveOut.Init(_waveProvider);
        }
示例#31
0
        private void Connect(IPEndPoint endPoint, IPEndPoint srcPoint, int inputDeviceNumber, INetworkChatCodec codec)
        {
            var sender = (IAudioSender) new UdpAudioSender(endPoint, srcPoint);

            audioSender = new NetworkAudioSender(codec, inputDeviceNumber, sender);
            connected   = true;
        }
示例#32
0
        /**
         *
         * Start SERVER
         *
         **/
        public void StartServer(string ip, int port)
        {
            // Recoding Audio
            waveIn = new WaveIn();                                            //Tạo object để làm việc với âm thanh
            int inputDeviceNumber = comboBoxInputDevices.SelectedIndex;       //Lấy số index của devices được chọn

            this.codec = ((CodecComboItem)comboBoxCodecs.SelectedItem).Codec; //Chứa chuẩn âm thanh ( đưa âm thanh về byte)
            waveIn.BufferMilliseconds = 50;
            waveIn.DeviceNumber       = inputDeviceNumber;
            waveIn.WaveFormat         = codec.RecordFormat;
            waveIn.DataAvailable     += waveIn_DataAvailable;
            waveIn.StartRecording();

            // Start Webcam
            cam = new VideoCaptureDevice(webcam[comboBoxWebcams.SelectedIndex].MonikerString);
            cam.VideoResolution = cam.VideoCapabilities[0]; // 640 x 480
            cam.NewFrame       += new AForge.Video.NewFrameEventHandler(showMyCam);
            cam.Start();

            // Open UDP connect for Audio sending
            udpAudioSender = new UdpClient();
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, port);

            udpAudioSender.Connect(endPoint);
            Console.WriteLine("Opened UDP for Audio at broadcast {0}:{1}", IPAddress.Broadcast, port);

            // Open TCP server for question, create new thread for non-block UI
            Thread mainThread = new Thread(() =>
            {
                try
                {
                    IPAddress ipAddress = IPAddress.Parse(ip);//Vì tcp chỉ nhận IPAddress nên phải parse ip về IPaddress
                    server = new TcpListener(ipAddress, port);
                    server.Start();
                    connected     = true;
                    _isDisconnect = false;
                    Console.WriteLine("Opened TCP server for Question at {0}:{1}", ip, port);

                    // Open Tcp for Webcam streaming
                    if (comboBoxWebcams.Items.Count >= 1)
                    {
                        tcpWebcamServer = new TcpListener(IPAddress.Parse(ip), port + 1);
                        tcpWebcamServer.Start();
                        webcamConnected = true;
                        Console.WriteLine("Opened TCP for Webcam at {0}:{1}", ip, port + 1);
                    }

                    // Listen from client
                    // open a new Thread if a Client connect
                    while (_numberConnecting < MAX_CONNECT)          //Số connecting hiện tại <100
                    {
                        Socket acceptSocket = server.AcceptSocket(); //Tạo ra 1 socket để làm việc với client
                        Socket webcamSocket = tcpWebcamServer.AcceptSocket();

                        // Add all socket connected to control
                        _listSocketWebcam.Add(webcamSocket);
                        _listSocket.Add(acceptSocket);

                        _numberConnecting++;

                        this.Invoke(new Action(() =>
                        {
                            txt_numberConnect.Text = _numberConnecting.ToString(); // update UI
                        }));

                        if (_isDisconnect)
                        {
                            break;
                        }

                        // ready for communications
                        //Khi 1 client xác nhận connected thì tạo ra 1 luồng cho nó
                        if (acceptSocket.Connected)
                        {
                            Thread thread = new Thread((client) =>
                            {
                                ConnectClient((Socket)client);
                            });
                            thread.Start(acceptSocket);
                        }
                    }
                    server.Server.Close();
                    _isDisconnect = false;
                    Console.WriteLine("Server was closed from main");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Server was close !!");
                    return;
                }
            });

            mainThread.Start();
        }
示例#33
0
 internal NetworkPlayer(INetworkChatCodec c)
 {
     codec = c;
 }
示例#34
0
        /**
         *
         * Client's
         *
         **/
        public void ConnectServer(string ip, int port)
        {
            //codec = new Gsm610ChatCodec(); // echo
            codec = new G722ChatCodec(); // echo
            //codec = new AcmALawChatCodec(); // bad
            //codec = new ALawChatCodec(); // bad - G711
            //codec = new AcmMuLawChatCodec(); // bad
            //codec = new MicrosoftAdpcmChatCodec(); // mute
            //codec = new MuLawChatCodec(); // bad
            //codec = new TrueSpeechChatCodec(); // error
            //codec = new UncompressedPcmChatCodec(); // echo

            try
            {
                // Webcam Receive
                TcpWebcamClient = new TcpClient();
                TcpWebcamClient.Connect(ip, port + 1);
                Console.WriteLine("Connect TCP for Webcam at {0}:{1}", ip, port + 1);

                // Audio Receive
                IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, port);
                udpAudioListener = new UdpClient();
                udpAudioListener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                udpAudioListener.Client.Bind(endPoint);
                Console.WriteLine("Connect UDP for Audio at {0}:{1}", endPoint.Address, endPoint.Port);

                connected = true;

                // listening & play webcam
                ThreadPool.QueueUserWorkItem(this.ListenerWebcamThread);

                // listening & play audio
                waveOut      = new WaveOut();
                waveProvider = new BufferedWaveProvider(codec.RecordFormat);
                waveOut.Init(waveProvider);
                waveOut.Play();
                ListenerThreadState threadState = new ListenerThreadState()
                {
                    Codec = codec, EndPoint = endPoint
                };
                ThreadPool.QueueUserWorkItem(this.ListenerAudioThread, threadState);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Cannot connect to server. Server closed!");
                btn_close.Enabled   = false;
                btn_connect.Enabled = true;
                return;
            }


            Thread mainThread = new Thread(() =>
            {
                string state    = string.Empty;
                string msg      = string.Empty; //Biến lưu chủ đề trả từ server về
                string received = string.Empty; //Biến lưu kết quả đúng sai

                try
                {
                    // connect
                    client = new TcpClient();
                    client.Connect(IPAddress.Parse(ip), port);
                    this.Invoke(new Action(() =>
                    {
                        txt_status.Text = string.Format("Connected to {0}:{1}", ip, port);
                    }));

                    isDisconnect = false;

                    // read, write to server using stream, over use bytes[]
                    Stream streamer  = client.GetStream();
                    reader           = new StreamReader(streamer);
                    writer           = new StreamWriter(streamer);
                    writer.AutoFlush = true;

                    // get user ID, state game
                    writer.WriteLine("init");
                    id    = reader.ReadLine();
                    state = reader.ReadLine();
                    Console.WriteLine("My received id: {0}, game play? {1}", id, state);

                    this.Invoke(new Action(() =>
                    {
                        txt_Id.Text          = id;
                        lbCountDown.Location = new Point(542, 393);
                    }));

                    string text = String.Format("Bạn là User_{0}", id);
                    MessageBox.Show(text, "Thông Báo!");
                    // get current question
                    if (state.Contains("True"))
                    {
                        Console.WriteLine("Join. Game was play");

                        writer.WriteLine("question");
                        string numberQuestion = reader.ReadLine();

                        this.Invoke(new Action(() =>
                        {
                            groupBox_webcam.Text = string.Format("Streaner - Câu hỏi: số {0}", int.Parse(numberQuestion));
                        }));

                        received = reader.ReadLine();
                        parseQuestion(received);


                        this.Invoke(new Action(() =>
                        {
                            // markup UI
                            answer_A.Enabled = true;
                            answer_B.Enabled = true;
                            answer_C.Enabled = true;

                            answer_A.BackColor = Color.Honeydew;
                            answer_B.BackColor = Color.Honeydew;
                            answer_C.BackColor = Color.Honeydew;

                            txt_question.Location = new Point(31, 334);
                            answer_A.Location     = new Point(165, 384);
                            answer_B.Location     = new Point(165, 420);
                            answer_C.Location     = new Point(165, 456);
                        }));
                    }

                    while (true)
                    {
                        // check disConnect button was clicked
                        if (isDisconnect)
                        {
                            break;
                        }

                        // listening msg from Server
                        msg = reader.ReadLine();

                        switch (msg)
                        {
                        case "img":
                            Console.WriteLine("get img");
                            break;

                        case "play":
                            MessageBox.Show("Game play . . .");
                            break;

                        case "new question":

                            // id
                            string numberQuestion = reader.ReadLine();

                            this.Invoke(new Action(() =>
                            {
                                groupBox_webcam.Text = string.Format("Streamer - Câu hỏi: số {0}", Convert.ToInt32(numberQuestion) + 1);
                            }));

                            //question
                            received = reader.ReadLine();
                            parseQuestion(received);

                            this.Invoke(new Action(() =>
                            {
                                // Markup UI
                                answer_A.Enabled = true;
                                answer_B.Enabled = true;
                                answer_C.Enabled = true;

                                answer_A.BackColor = Color.Honeydew;
                                answer_B.BackColor = Color.Honeydew;
                                answer_C.BackColor = Color.Honeydew;

                                txt_question.Location = new Point(31, 334);
                                answer_A.Location     = new Point(165, 384);
                                answer_B.Location     = new Point(165, 420);
                                answer_C.Location     = new Point(165, 456);
                            }));
                            break;

                        case "correct":
                            received = reader.ReadLine();
                            Console.WriteLine(received);

                            score++;

                            break;

                        case "incorrect":
                            received = reader.ReadLine();
                            Console.WriteLine(received);
                            break;

                        case "show answer":

                            if (received == "A")
                            {
                                answer_A.BackColor = Color.Green;
                                if (answer == "A")
                                {
                                    this.Invoke(new Action(() =>
                                    {
                                        txt_score.Text = score.ToString();
                                    }));
                                }
                            }
                            else if (received == "B")
                            {
                                answer_B.BackColor = Color.Green;
                                if (answer == "B")
                                {
                                    this.Invoke(new Action(() =>
                                    {
                                        txt_score.Text = score.ToString();
                                    }));
                                }
                            }
                            else if (received == "C")
                            {
                                answer_C.BackColor = Color.Green;
                                if (answer == "C")
                                {
                                    this.Invoke(new Action(() =>
                                    {
                                        txt_score.Text = score.ToString();
                                    }));
                                }
                            }
                            else
                            {
                                Console.WriteLine("Dont A, B, C");
                            }

                            answer = "";
                            break;

                        case "show winner":
                            received    = reader.ReadLine();
                            string cost = reader.ReadLine();
                            Console.WriteLine(received);
                            string s = received + "\n" + cost;
                            MessageBox.Show(s);
                            score = 0;
                            break;

                        default: break;
                        }
                    }
                    streamer.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Disconnected from server");

                    this.Invoke(new Action(() =>
                    {
                        btn_close.Enabled   = false;
                        btn_connect.Enabled = true;

                        txt_question.Location = new Point(-31, -334);
                        answer_A.Location     = new Point(-165, -384);
                        answer_B.Location     = new Point(-165, -420);
                        answer_C.Location     = new Point(-165, -456);

                        lbCountDown.Location     = new Point(-542, -393);
                        pictureBoxStreamer.Image = Image.FromFile("404.jpg");
                    }));

                    client.Close();
                }
            });

            mainThread.Start();
        }
示例#35
0
		internal NetworkPlayer(INetworkChatCodec c)
		{
			codec = c;
		}
示例#36
0
        internal WaveInRecorder(INetworkChatCodec c,int devIndex = 0)
        {
			deviceNumber = devIndex;
            codec = c;
			waveIn = new WaveIn() { DeviceNumber = deviceNumber, WaveFormat = codec.RecordFormat };		
        }