下面有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;
}
答案 0 :(得分:0)
再次阅读材料并意识到我必须在代码的末尾加入一个字母。
While(true) {
(void) printf("Server start.");
//Some code
//Some code
(void) printf("Client Connected.");
}
send_eof(conn);