它是一个用C ++编写的简单应用程序客户端服务器 操作系统是OpenSUSE 13.1 Linux
我不知道怎么做多客户端 如果你能帮助我,我会很感激
这一切只适用于一个客户
我需要帮助,谢谢
这是 Server.cpp
#include "ServerSocket.cpp"
#include "SocketException.h"
#include <string>
#include <iostream>
int main ()
{
std::cout << "running....\n";
try
{
// Create the socket
ServerSocket server ( 2020 );
while ( true )
{
ServerSocket new_sock;
server.accept ( new_sock );
try
{
while ( true )
{
std::string data;
new_sock >> data;
std::cout << "in::" << data << std::endl;
new_sock << data; // Respuesta
}
}
catch ( SocketException& ) {}
}
}
catch ( SocketException& e )
{
std::cout << "Exception was caught:" << e.description() << "\nExiting.\n";
}
return 0;
}
这是 Client.cpp
#include "ClientSocket.cpp"
#include "SocketException.h"
#include <iostream>
#include <string>
int main ( )
{
try
{
ClientSocket client_socket ( "localhost", 2020 );
std::string reply;
try
{
std::string Envio = "";
while(Envio != "Exit")
{
getline(std::cin, Envio);
client_socket << Envio;
client_socket >> reply;
}
}
catch ( SocketException& ) {}
std::cout << "We received this response from the server:\n\"" << reply << "\"\n";;
}
catch ( SocketException& e )
{
std::cout << "Exception was caught:" << e.description() << "\n";
}
return 0;
}
答案 0 :(得分:0)
您的服务器在第一个服务器之后停止接受连接,并进入无限循环(内部while (true)
)。
如何解决此问题取决于您的服务器应如何为客户端提供服务。如果它接受连接,接收请求,发送回复然后忘记客户端,那么你不需要内部while (true)
:只需<<
和>>
操作(可能你也应该关闭连接),然后进入下一个accept
。如果您需要多个连接存活,请考虑使您的应用程序具有多线程(如果连接数不是很大,可能会为每个连接生成一个新线程)。