Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何停止客户端向服务器发送消息?_C++_Visual Studio_Mfc_Client Server - Fatal编程技术网

C++ 如何停止客户端向服务器发送消息?

C++ 如何停止客户端向服务器发送消息?,c++,visual-studio,mfc,client-server,C++,Visual Studio,Mfc,Client Server,我想在mfc中创建一个客户机-服务器程序。我从这个网站上找到了一些非常好的源代码: 但是在这个程序中,客户端向服务器发送一条消息,然后服务器显示客户端的ip地址、端口号、时间、日期和消息 我不希望客户发送消息。当客户端单击按钮时,我只希望它连接到服务器。它不需要做任何其他事情。我尝试删除发送消息的代码,但这会导致编译错误的加载 下面是一些来自客户端的代码: char sbuf[1024], rbuf[1024]; UpdateData(TRUE); sprintf(sbuf

我想在mfc中创建一个客户机-服务器程序。我从这个网站上找到了一些非常好的源代码:

但是在这个程序中,客户端向服务器发送一条消息,然后服务器显示客户端的ip地址、端口号、时间、日期和消息

我不希望客户发送消息。当客户端单击按钮时,我只希望它连接到服务器。它不需要做任何其他事情。我尝试删除发送消息的代码,但这会导致编译错误的加载

下面是一些来自客户端的代码:

   char sbuf[1024], rbuf[1024];
    UpdateData(TRUE);
    sprintf(sbuf,"%s\r\n", (const char*) m_senddata);
    if(send(s, sbuf, strlen(sbuf), 0) == strlen(sbuf))
    {
        recv(s, rbuf, 1024, 0);
        m_recvData = rbuf;
        UpdateData(FALSE);
    }
    ::closesocket(s);
下面是来自服务器的一些代码:

        char rbuf[1024];
        recv(clientsocket, rbuf, 1024, 0);
        for(int i = 1024; i >= 1; i--)
        {
            if(rbuf[i] == '\n' && rbuf[i - 1] == '\r')
            {
                rbuf[i-1] = '\0';
                break;
            }
        }
        CString strRecvData;

        strRecvData.Format("%s\r\n%s %d\r\n%s\r\n\r\n", (const char*)CTime::GetCurrentTime().Format("%B %d, %Y %H:%M:%S"), p, portno, rbuf);
        m_recvData += strRecvData;
        m_bRefershData = true;
        strcat(rbuf, "\r\n");
        send(clientsocket, rbuf, 1024, 0);
        closesocket(clientsocket);
    enter code here

如果有人需要,我可以发布其余的函数

你能提供你得到的那些编译器错误吗

为了连接到服务器,您只需使用函数创建套接字,获取套接字处理程序并将其传递给函数

在客户端,它应该是这样的:

SOCKET getNewSocket() {
    SOCKET client = socket(AF_INET, SOCK_STREAM, 0);
    if (client == INVALID_SOCKET) {
        return NULL;
    }

    char host[15];
    strcpy(host, "127.0.0.1");
    int port = 80;

    sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);
    if (inet_addr(host) == INADDR_NONE) {
        closesocket(client);
        return NULL;
    }
    addr.sin_addr.s_addr = inet_addr(host);

    if (connect(client, (sockaddr*)&addr, sizeof(addr))) {
        closesocket(client);
        return NULL;
    }

    return client;
}

是的,我有创建套接字的代码,我刚刚展示了用于消息的代码。是否要查看代码的其余部分?我得到的错误是,当我单击客户端上的按钮时,会出现一个对话框,提示TODO:已停止工作。您可以使用调试器找出它在哪一行上崩溃吗?还有一个问题。你调用这个函数吗?在windows中使用套接字函数之前必须调用它。好的,我已经知道要删除什么代码来停止消息,但是现在我想删除编辑框,但是当我运行程序时,会出现一个对话框,说正在尝试不支持的操作