C ++多客户端服务器

时间:2014-02-23 00:32:22

标签: c++ sockets client-server

不过我的英语。

它是一个用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;
}

1 个答案:

答案 0 :(得分:0)

您的服务器在第一个服务器之后停止接受连接,并进入无限循环(内部while (true))。

如何解决此问题取决于您的服务器应如何为客户端提供服务。如果它接受连接,接收请求,发送回复然后忘记客户端,那么你不需要内部while (true):只需<<>>操作(可能你也应该关闭连接),然后进入下一个accept。如果您需要多个连接存活,请考虑使您的应用程序具有多线程(如果连接数不是很大,可能会为每个连接生成一个新线程)。