Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2015, 21:42   #1
123456789igor
Пользователь
 
Регистрация: 19.04.2011
Сообщений: 62
По умолчанию Сервис + передача видео

Прошу помощи, совсем не понимаю почему не работает.

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

Код:
[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<IChatChannel>(context, "ChatEndPoint");
                    channel = factory.CreateChannel();
                    IOnlineStatus status = channel.GetProperty<IOnlineStatus>();
                    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;
                }
                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);
            }
        }
123456789igor вне форума Ответить с цитированием
Старый 17.05.2015, 22:24   #2
123456789igor
Пользователь
 
Регистрация: 19.04.2011
Сообщений: 62
По умолчанию

Когда начинаю шарить видео с вебки(со 2го компьютера), на 1ой машине постоянно вызывается метод void Online(object sender, EventArgs e), а должен void ChatClient_Call(string name, byte[] message).
Когда начинаю отправку с 1го на 2ой- все хорошо. Видео передается и отображается.
123456789igor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
улучшить видео/фото лица преступника с камеры видео наблюдения, срочно! Фандорин Помощь студентам 1 28.01.2014 10:28
передача видео по локальной сети RsSOS Помощь студентам 2 19.05.2012 10:25
передача видео пльлка с web-камеры по сети Lorden Работа с сетью в Delphi 2 19.02.2011 00:12
Передача видео по сети Yur@ Мультимедиа в Delphi 9 16.09.2010 11:51
Передача видео Zer0 Работа с сетью в Delphi 1 14.12.2007 10:20