Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сервис + передача видео 
:(
    Опции темы
123456789igor
Дата 17.5.2015, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 27.3.2011

Репутация: нет
Всего: нет



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

Пытаюсь написать передачу видео с камеры использую 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;
                    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);
            }
        }


PM MAIL   Вверх
123456789igor
Дата 17.5.2015, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 27.3.2011

Репутация: нет
Всего: нет



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

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.