Сервис + передача видео

Тема в разделе ".NET - Общие вопросы по языкам", создана пользователем 123456789igor, 17 май 2015.

  1. 123456789igor

    123456789igor Active Member

    Регистрация:
    12 янв 2011
    Сообщения:
    29
    Симпатии:
    0
    Прошу помощи, совсем не понимаю почему не работает.
    Пытаюсь написать передачу видео с камеры использую wcf. Ситуация такая. Видео шлется только с 1го компьютера другому, причет компьютер, тут как реальная физическая сущность. Пример: Есть компьютер 1 и компьтер 2. На 1ом компьютере запустил сервис. Скопировал клиентскую часть на 2 машины, т.е исполняемые экземпляры полностью идентичны. И видео шлется только с 1го компьютера на 2ой. Наоборот вообще не работает. Я думал, что может это как-то связано с тем, где запусщен сервис, но нет. Если сервис запустить на машине 2, то все равно видео будет слаться с 1го на 2го. Наоборот работать не будет. Прошу помочь разобраться, что не так. Совершенно не понимаю, что происходит. Линка на проект, гитхаб:https://github.com/jacky22/Chat

    Код (C++):
    [ServiceContract(CallbackContract = typeof(IChatService))]
        public interface IChatService
        {
            [OperationContract(IsOneWay = true)]
            void Join(string memberName);
            [OperationContract(IsOneWay = true)]
            void Leave(string memberName);
            [OperationContract(IsOneWay = true)]
            void SendMessage(string memberName, string message);
            [OperationContract(IsOneWay = true)]
            void Call(string memberName, byte[] message);
        }
        public interface IChatChannel : IChatService, IClientChannel
        {
        }
    public partial class ChatClient : Form, IChatService
        {
            private delegate void UserJoined(string name);
            private delegate void UserSendMessage(string name, string message);
            private delegate void UserCall(string name, byte[] message);
            private delegate void UserLeft(string name);
            private static event UserJoined NewJoin;
            private static event UserSendMessage MessageSent;
            private static event UserCall userCall;
            private static event UserLeft RemoveUser;private void btnLogin_Click(object sender, EventArgs e)
            {
                if (!string.IsNullOrEmpty(txtUserName.Text.Trim()))
                {
                    try
                    {
                        NewJoin += new UserJoined(ChatClient_NewJoin);
                        MessageSent += new UserSendMessage(ChatClient_MessageSent);
                        RemoveUser += new UserLeft(ChatClient_RemoveUser);
                        userCall += new UserCall(ChatClient_Call);
                        channel = null;
                        this.userName = txtUserName.Text.Trim();
                        InstanceContext context = new InstanceContext(
                            new ChatClient(txtUserName.Text.Trim()));
                        factory =
                            new DuplexChannelFactory(context, "ChatEndPoint");
                        channel = factory.CreateChannel();
                        IOnlineStatus status = channel.GetProperty();
                        status.Offline += new EventHandler(Offline);
                        status.Online += new EventHandler(Online);                 
                        channel.Open();                
                        channel.Join(this.userName);
                        grpMessageWindow.Enabled = true;
                        grpUserList.Enabled = true;                
                        grpUserCredentials.Enabled = false;                
                        this.AcceptButton = btnSend;
                        rtbMessages.AppendText("*****************************WEL-COME to Chat Application*****************************\r\n");
                        txtSendMessage.Select();
                        txtSendMessage.Focus();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                }
            }
    void ChatClient_Call(string name, byte[] message)
            {
                try
                {
                    if (name == "1")
                    {
                        EncodingImage enc = new EncodingImage();
                        var result = enc.EncodingImageForRecievedBuffer(message);
                        pictureBox1.Image = result;
                    }
                    else
                    {
                        EncodingImage enc = new EncodingImage();
                        var result = enc.EncodingImageForRecievedBuffer(message);
                        pictureBox2.Image = result;
                    }
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Trace.WriteLine(ex.ToString());
                }
            }
    public void Call(string memberName, byte[] message)
            {
                if (MessageSent != null)
                {
                    userCall(memberName, message);
                }
            }private void button1_Click(object sender, EventArgs e)
            {
                isStop = false;
                Thread t1 = new Thread(start);
                t1.Start();
            }
            private void start()
            {
                while (!isStop)
                {
                    Thread.Sleep(100);
                    CodingImage image = new CodingImage();
                    byte[] bytes = image.CodingImages(video);
                    channel.Call(this.userName, bytes);
                }
            }
     
Загрузка...

Поделиться этой страницей