клиент-серверное взаимодействие - PullRequest
0 голосов
/ 18 января 2012

Когда моя программа из отвечает на мой предыдущий вопрос , клиент должен отправить зашифрованное сообщение.
Когда клиент подключается, он отправляет сообщение типа «YourMessage».Теперь я хочу сделать так, чтобы при подключении клиента это сообщение как-то кодировалось, а на экране клиента появлялось что-то еще.Как мне это сделать?

Код сервера:

#include "wind.h"

using namespace std;

//begi
void main()
{

    long answer ;
    WSAData wsaData;
    WORD DLLVERSION;
    DLLVERSION = MAKEWORD(2,1);

    answer = WSAStartup(DLLVERSION, &wsaData);

    SOCKADDR_IN addr;
    int addrlen = sizeof(addr);

 SOCKET slisten;
 SOCKET  sConnect;

 sConnect = socket(AF_INET,SOCK_STREAM,NULL);

 addr.sin_addr.s_addr = inet_addr("127.0.0.1");
 addr.sin_family = AF_INET;

 addr.sin_port = htons(1234);

 slisten = socket(AF_INET,SOCK_STREAM,NULL);

 bind(slisten, (SOCKADDR*)&addr, sizeof(addr));
 // unlimited clients
 listen(slisten, SOMAXCONN);

 //conditions
 for(;;)



      {
cout <<"waiting for client" <<endl;
if (sConnect = accept(slisten,(SOCKADDR*)&addr, &addrlen))
      {
          cout<<" A connection was found" <<endl;

           answer = send(sConnect,       "YourMessage", 12 ,NULL);
         char cMyCharacter = 'A';
       int iMyAsciiValue = static_cast<int>(cMyCharacter);
      }

 }
}

Код клиента:

#include "clnt.h"

using namespace std;

void main ()
{
 string confirm;
 char message[200];
  string strmessage;

long answer;
WSAData wsaData;
WORD DLLVersion;
DLLVersion = MAKEWORD(2,1);
answer = WSAStartup(DLLVersion, &wsaData);



SOCKADDR_IN addr;
 int addrlen = sizeof(addr);

  SOCKET sconnect;

  sconnect = socket(AF_INET,      SOCK_STREAM,NULL);

  addr.sin_addr.s_addr = inet_addr("127.0.0.1");

  addr.sin_family = AF_INET;

  addr.sin_port = htons(1234);


cout <<" Do you want to connect to your server?[Y/N]" <<endl;
cin>> confirm;
if(confirm == "N")
{
      exit(1);
    }
       else
    {
        if(confirm == "Y")
        {
           connect(sconnect,     (SOCKADDR*)&addr, sizeof(addr));
          answer = recv(sconnect, message, sizeof(message), NULL);
          strmessage = message;
          cout << strmessage <<endl;
          getchar();
        }

     }

getchar();
}

1 Ответ

0 голосов
/ 18 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...