微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调试断言

如何解决调试断言

当调试进入“valread = read(new_socket,buffer,256)”行时,我收到类似“Debug Assertion Failed”消息的错误,当我按忽略按钮,我看到异常

"soketSample.exe 中 0x00007FFCAC2EAFAC (ucrtbased.dll) 处未处理的异常:无效参数被传递给认为无效参数致命的函数"

我的代码如下;

#include <io.h>
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <ws2tcpip.h>
#include <MSWSock.h>
#include <share.h>
#include <atltypes.h>


using namespace std;

int main(int argc,char const *argv[])
{

    int server_fd,new_socket,valread;
    struct sockaddr_in address;
    int opt = 1;
    int addrlen = sizeof(address);
    char buffer[256] = {};
    char *hello = "Hello from server";

    WSADATA Data;
    WSAStartup(MAKEWORD(2,2),&Data);

    //Creating socket file descriptor
    if ((server_fd = socket(AF_INET,SOCK_STREAM,0)) < 0)
    {
        perror("ERROR opening socket");
        exit(EXIT_FAILURE);
    }

    
    if (setsockopt(server_fd,SOL_SOCKET,SO_REUSEADDR,(const char*)& opt,sizeof(opt)) < 0)
    {
        perror("Failed to set the SO_REUSEADDR option");
        exit(EXIT_FAILURE);
    }

    
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY; //inet_addr("127.0.0.1");
    address.sin_port = htons(30035);

    // Forcefully attaching socket to the port 8080 
    if (bind(server_fd,(struct sockaddr*)&address,sizeof(address)) < 0)
    {
        perror("bind Failed");
        exit(EXIT_FAILURE);
    }
    if (listen(server_fd,5) < 0)
    {
        perror("listen");
        exit(EXIT_FAILURE);
    }
    if ((new_socket = accept(server_fd,(socklen_t*)&addrlen)) < 0)
    {
        perror("accept");
        exit(EXIT_FAILURE);
    }

    
    Sleep(3000);
    valread = read(new_socket,256); ****

    send(new_socket,"Hello,world!\n",13,0);
    printf("%s\n",buffer);
    
    return 0; 

}

我的代码有什么问题,你能帮我吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。