【问题标题】:How to validate the user request in the server side (in my specific case)?如何在服务器端验证用户请求(在我的具体情况下)?
【发布时间】:2017-11-06 16:43:40
【问题描述】:

在我的客户端服务器应用程序中,客户端请求相机服务器发送一张或多张具有给定分辨率(宽 x 高)的图像。我已经硬编码了分辨率。

假设相机无法拍摄用户请求的指定尺寸的图像。在这种情况下,服务器必须处理该请求并采取适当的措施(例如,让用户知道大小无效,或再次输入)。有人可以给我任何提示,我该如何实现?或者,如果有人能用比我现在做的更好的方法来提示我。我可能不需要任何代码(如果有人可以用它来回答,那很好),我只需要一个理论上的解释。感谢您的关注。

我的工作代码[如果需要完整代码,请索取]:

客户:

   printf("chose resolution\nsmall = 1 \nmedium = 2 \nlarge = 3 \nelse defualt\n  ");
    cin >> res;
    if (res == 1) {
        char rr[10] = { "160x120" };
        strcat(RES, rr); // store the rr (160x120) into RES
    }   else if (res == 2) {
        char rr[10] = { "640x480" };
        strcat(RES, rr);
    }   else if (res == 3) {
        char rr[10] = { "1024x768" };
        strcat(RES, rr);
    }
    else {
        char rr[10] = { "320x200" };
        strcat(RES, rr);
    }

服务器:

for (;;) {

            recv(sock_CONNECTION,fps_res, sizeof(fps_res),NULL);

            stream = capture_open_stream(IMAGE_JPEG, fps_res);

            for(;;)
            {
            int Sbytes=0;
            frame        = capture_get_frame(stream);
            data = capture_frame_data(frame);

            int size = capture_frame_size(frame);

            send(sock_CONNECTION,(char*)&size,sizeof(int),NULL);
            Sbytes=send(sock_CONNECTION,data, size, NULL);


            capture_frame_free(frame);

            if(Sbytes<0){

            break;

            }

            }
            exit(0);

    }

【问题讨论】:

  • 据我了解,您是说客户端应用程序可以发送任何分辨率的请求,并且该分辨率需要在服务器代码中验证,然后才能满足客户端请求,无论具有该分辨率的图片是否可用?
  • 阿比吉特,完全正确。你明白了我的意思。
  • 为什么不将选择维度的客户端代码部分移动到服务器并仅发送客户端选择的选项 1、2、3...这样,如果选项无效,您会发回默认尺寸.
  • @JabirAlFatah,请看我的回答。
  • 杀戮地带小子,感谢您的评论。不过,它给了我一个想法。但我的问题是:客户如何知道正在选择什么分辨率?如果我在服务器中有部分代码,客户端请求如何传递到服务器。请您在评论中提供一些细节吗?

标签: c++ sockets socket.io client-server


【解决方案1】:

在这行代码之后获取frame的大小,并与client frame进行比较。并检查您是否收到了来自客户的原始请求。

int size = capture_frame_size(frame);

在上述代码行之后,检查您是否收到了基于原始请求的帧。如果不向客户端发送错误消息,则请求分辨率的帧不可用。

如果还不清楚,请告诉我。

【讨论】:

    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2021-06-15
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    相关资源
    最近更新 更多