Я пишу небольшую программу, которая может отправлять файл с Клиента -> Сервер (Отправить) и Сервер -> Клиент (Запрос).Сервер C++ - Синхронизация сообщений клиента
Хорошо сделанная эта часть, но проблемы возникают, когда: 1. Я нашел файл на сервере, как я могу выполнить cin на стороне клиента? 2. Как заставить синхронизировать сообщения между сервером и клиентом? Я имею в виду, что я не хочу, чтобы сервер перешел к следующему шагу или замерзал при получении. Для примера (Нет резьбы, применяемой в этой значке): - Сервер: ожидание сообщения от клиента. Клиент: Отправить сообщение. Клиент: Ожидание сообщения от клиента. Сервер: Отправить сообщение. ..... и т.п.
В редкие времена сообщения поступают на заказ, но 99,999% времени, когда они этого не делают, и программа с двух сторон замерзает.
Проблема с сообщениями inorder была потоком на стороне клиента, который продолжал читать ответы inc, не позволяя фактическим функциям их видеть.
Однако около точки 1. Я пытаюсь в этом коде: 1. Нет общих ресурсов, так что я пытаюсь определить все внутри этой функции (ее части, где проблема происходит) 2. Я пытался передать эту функцию в поток, чтобы сервер мог принимать больше клиентов. 3. отправить & не получите ничего особенного о них, просто обычные вызовы отправки/получения. 3. Вопрос: если SendMyMessage & ReceiveMyMessage будет использоваться различными потоками, должен ли я передавать сокет им с сообщением?
void ExecuteRequest(void * x)
{
RequestInfo * req = (RequestInfo *) x;
// 1st Message Direction get or put
fstream myFile;
myFile.open(req->_fName);
char tmp;
string _MSG= "";
string cFile = "*";
if(req->_fDir.compare("put") == 0)
{
if(myFile.is_open())
{
SendMyMessage("*F*");
cFile = ReceiveMyMessage();
// I want here to ask the client what to do after he found the that file exist on the server,
// I want the client to to get a message "*F*", then a cin command appear to him
// then the client enter a char
// then a message sent back to the server
// then the server continue executing the code
//More code
}
Клиент сторона:
{
cout <<"Waiting Message" <<endl;
temps = ReceiveMessage();
if(temps.compare("*F*") == 0)
{
cout <<"File found on Server want to:\n(1)Replace it.\n(2)Append to it." <<endl;
cin>>temps;
SendMyMessage(temps);
}}
Я использую Visual Studio 2013 Windowx 7 нить я с помощью: _beginthread (я удалил все темы)
С уважением,
Возможно, вы не видели «Хорошо сделана эта часть, но проблемы приходят». Только те 2 пункта, которые я все еще пытаюсь решить. – nothing
Хорошо, покажите проблемную часть вашего кода. Трудно сказать что-нибудь сейчас. – deepmax
k Спасибо, я добавил часть кода, относящуюся к этой проблеме – nothing