у меня есть 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;
}
Прочитав материал еще раз, я понял, что в конце кода мне нужно было включить while.
While(true) {
(void) printf("Server start.");
//Some code
//Some code
(void) printf("Client Connected.");
}
send_eof(conn);
Других решений пока нет …