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

123456789igor

Active member
12.01.2011
29
0
#1
Прошу помощи, совсем не понимаю почему не работает.
Пытаюсь написать передачу видео с камеры использую wcf. Ситуация такая. Видео шлется только с 1го компьютера другому, причет компьютер, тут как реальная физическая сущность. Пример: Есть компьютер 1 и компьтер 2. На 1ом компьютере запустил сервис. Скопировал клиентскую часть на 2 машины, т.е исполняемые экземпляры полностью идентичны. И видео шлется только с 1го компьютера на 2ой. Наоборот вообще не работает. Я думал, что может это как-то связано с тем, где запусщен сервис, но нет. Если сервис запустить на машине 2, то все равно видео будет слаться с 1го на 2го. Наоборот работать не будет. Прошу помочь разобраться, что не так. Совершенно не понимаю, что происходит. Линка на проект, гитхаб:
Для просмотра контента необходимо: Войти или зарегистрироваться


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);
			}
		}