客户端/服务器计算器C ++出现问题

时间:2018-12-19 15:22:43

标签: c++ server client calculator

我是编码的新手,我必须为此客户端/服务器计算器进行大学课程的考试。 不幸的是,我的教授并没有向我们解释什么,所以我必须自己完成所有工作。

我已经编码了程序的连接部分,并且工作正常,实际上客户端可以连接到服务器。

我面临的问题是服务器中应该从客户端接收整数的函数。 问题是无论我从客户端发送到服务器的任何数字都只能到达0。 我知道这是因为我正在使用cout在函数后显示值。

服务器端功能:

void ricezione_interi(int intero, int csock){
int bytesRecv = recv(csock, &intero, sizeof(int), 0);
if (bytesRecv == -1)
{
    cout << "Connection issue." << endl;
    close(csock);
    exit(1);
}
if (bytesRecv == 0)
{
    cout << "Client disconnected." << endl;
    close(csock);
    exit(1); 
}

return; }

客户端代码:

int bytesSent = send(sock, &intero, sizeof(int), 0); 

    if (bytesSent == -1)
    {
        cerr << "There was a connection issue." << endl;
        break;
    }
    if (bytesSent == 0)
    {
        cout << "Disconnected." << endl; 
        break;
    } 

此代码有什么问题? 谢谢您的关注。

最好的问候。

1 个答案:

答案 0 :(得分:0)

  

问题是,无论我从客户端发送到哪个号码,   服务器只到达0。

没有MCVE,我只能猜测出什么问题。所以这是我的猜测...

您的接收器功能做什么与

大致相同
void foo(int x) {
    x = 24;
}

调用时

int main() {
    int y = 0;
    foo(y);
    std::cout << y;
}

然后您将获得0作为输出。原因是x是按值传递的。如果要让函数修改其参数,则必须通过引用传递它:

void foo(int& x) {   // note the &
     x = 24;
}
int main() {
    y = 0;
    foo(y);
    std::cout << y;
}

这将打印24

PS:请注意,此答案完全基于猜测。我不知道您如何知道该值始终为0,我不得不猜测。在询问有关代码的问题时,重要的是包括一个最小的完整且可验证的示例以及预期的输出以及问题中的实际输出。