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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2010, 20:56   #1
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
Стрелка Параллельный запуск двух потоков

Описал два потока: для отправки сообщения одному из клиентов
thread_send=CreateThread(NULL,0,SEN D,(void *)&client,0,&sendID);
и для получения сообщения от одного из клиентов thread_recv=CreateThread(NULL,0,REC V,(void *)&client,0,&recvID);
Они должны выполняться одновременно(т.е чтобы пользователь мог писать сообщение и одновременно с этим принимать сообщение)

Функции, выполняющиеся в потоках:
Код:
DWORD WINAPI SEND(LPVOID param){
	
	SOCKET client;
	client=*((SOCKET *)param);
	
	  char message[100];
	  char target[10];
	 
	  cout <<"Enter target of message:\n "<<endl;
	  cin>>target;
	  send(client,target,10,0);
	  cout << "Enter the message : \n"<<endl;

	  cin.ignore();
	 
	  cin.getline(message,100);
	  getch();
     
	  cout << message <<endl;

     send(client,message,100,0);
     
}

DWORD WINAPI RECV(LPVOID param){
	SOCKET client;
	client=*((SOCKET *)param);
	
	char  *buf_r;
	buf_r=(char *)malloc(100);
	    
	char  *buf_nam;
	buf_nam=(char *)malloc(10);
     
   recv(client,buf_nam,10,0);
	recv(client,buf_r,100,0);

	cout<< "Upload new message  from "<<buf_nam<<" : " << buf_r <<endl;
	   
	free(buf_r);
	free(buf_nam);
  }
на клиенте запускаю:
Код:
 thread_send=CreateThread(NULL,0,SEND,(void *)&client,0,&sendID);
     if(thread_send==NULL){
			       cout<<"Error CreateThread by thread_send"<<std::endl;
			       return -1;
	  }
	 
  
     thread_recv=CreateThread(NULL,0,RECV,(void *)&client,0,&recvID);
     if(thread_recv==NULL){
			       cout<<"Error CreateThread by thread_recv"<<std::endl;
			       return -1;
	  }
При этом, не дождавшьсь ввода имени получателя сообщения , прога перескакивает дальше. Подскажите пжалуйста как заставить прогу корректно работать?
Единственный способ стать умнее - играть с более умным противником.

Последний раз редактировалось Sazary; 01.05.2010 в 17:52.
Sam Gold вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать запуск и контроль нескольких однотипных потоков. Son Общие вопросы Delphi 5 29.04.2010 08:40
Параллельный алгоритм прогонки Zhadra Общие вопросы Delphi 4 23.04.2010 08:46
Реализация двух потоков, работа с буфером, механизм семафоров (С++ или Delphi) shoonya Помощь студентам 0 05.04.2010 14:08
Курсовая работа (параллельный алгоритм) MaxDDT Фриланс 1 05.01.2010 18:56
Запуск потоков в цикле VALERO Общие вопросы Delphi 11 01.03.2009 14:57