Visual Studio — Как изменить код сервера C ++ для последовательной обработки более одного клиента?

у меня есть EchoServer.cpp приведенный ниже код, который позволяет мне установить сервер, и с двумя окнами подсказок я могу связаться с сервером, который вернет тот же текст, который я ввожу.

Пример:

Вход> Привет
Выход> Привет

Однако сервер позволяет одновременно подключаться только одному пользователю, и, если пользователь отключается (закройте приглашение), сервер автоматически отключается. Мне сказали, что вы можете изменить только пару строк (не нужно использовать многопоточность), чтобы это работало.

Что мне нужно сделать, чтобы сервер НЕ отключался, а следующий пользователь ждал, пока первый пользователь не отключится (закрыл приглашение)?

Если возможно, объяснение или страница источника, чтобы я мог прочитать больше о, помогли бы.

#include <iostream>
using std::cout;
using std::cin;

#include <iomanip>
using std::setw;
using std::endl;

#include  "../api/cnaiapi.h"
int main(int argc, char *argv[])    {
/** Buffer size.                    */
const int BUFFER_SIZE = 256;
/** Socket descriptor for service.  */
connection  conn;
/** Length of buffer.               */
int len;
/** Input buffer.                   */
char buff[BUFFER_SIZE];

if (argc != 2) {
/**line to send formatted output to a stream - RC**/
(void) fprintf(stderr, "usage: %s <appnum>\n", argv[0]);
exit(1);
}

/* Verify that the user passed the command line arguments.*/
if (argc != 2)  {
cout << "\n\tUsage: " << argv[0]
<< " <appnum or port#>"<< "\n\tExample:"<< "\n\t" << argv[0]
<< " 7"<< "\n\n\t(Start the server on port number 7"<< "\n\n" << endl;
exit(1);
}

/*  Wait for a connection from an echo client,
*  if no client connects exit in error.
*/
/*  conn = await_contact((appnum) atoi(argv[1]));
if (conn < 0)
exit(1);
*/
conn = await_contact((appnum)atoi(argv[1]));
if (conn < 0)
exit(1);

/* iterate, echoing all data received until end of file */
while ((len = recv(conn, buff, BUFFER_SIZE, 0)) > 0)
(void) send(conn, buff, len, 0);
send_eof(conn);

return 0;
}

-2

Решение

Прочитав материал еще раз, я понял, что в конце кода мне нужно было включить while.

While(true) {
(void) printf("Server start.");
//Some code

//Some code
(void) printf("Client Connected.");
}
send_eof(conn);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]