【问题标题】:client/server interaction客户端/服务器交互
【发布时间】:2012-01-18 13:54:46
【问题描述】:

当我来自my previous question 的程序响应客户端时,它应该发送加密消息。
当客户端连接时,它会发送一条消息,例如“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();
}

【问题讨论】:

    标签: c visual-c++ client-server


    【解决方案1】:

    它应该像现在一样工作,但不是发送明文字符串,而是发送加密字符串。如果加密使二进制数据块也发送,但客户端必须在将其显示给用户之前解密。

    【讨论】:

      猜你喜欢
      • 2015-12-25
      • 2016-07-28
      • 1970-01-01
      • 2015-08-14
      • 2015-01-02
      • 2014-10-06
      • 2017-12-06
      • 2013-10-27
      • 1970-01-01
      相关资源
      最近更新 更多