如何解决调试断言
当调试进入“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 举报,一经查实,本站将立刻删除。