由于WSACleanup,sql server已消除错误
sql server has gone away error because of WSACleanup
我想寻求帮助,因为我不知道该怎么办了。我在c++中创建了一个模拟器,它接受用户输入的id,并检查它是否在数据库中(在mysql工作台中创建),该数据库仅在localhost中。
sqlQuery = "SELECT staffaccess.card_number FROM proxycardsim.staffaccess WHERE staffaccess.card_number = "
+ inputID;
if(mysql_ping(theInstance.connects))
{
}
int queryState = mysql_query(theInstance.connects, sqlQuery);
resultSet = mysql_store_result(theInstance.connects);
rowNum = mysql_num_rows(theInstance.resultSet);
if (rowNum == NULL)
{
mysql_free_result(theInstance.resultSet);
return false;
}
else
{
mysql_free_result(theInstance.resultSet);
return true;
}
问题是模拟器连接到另一台充当服务器的计算机(通过winsock连接)。如果服务器启动,或者所有输入都是错误的,但如果服务器关闭(我的代码将尝试再次连接到服务器pc,所以我必须调用WSACleanup),在输入一个正确的值并输入另一个mysql_query后,返回一个错误,即mysql服务器已经离开。然后,当程序转到mysql_num_rows时,它将中断。
我在另一个函数中有这段代码,当我逐一注释它们时,我发现错误是因为WSACleanup()。如果WSACleanup行不在那里,我的查询运行正常。
if ( false == theInstance.compareID(m_IDEntry))
{
addData(ConsoleLog,rec,0,0);
}
else
{
// Send an initial buffer
iResult = send( connectSocket, sendBuf, (int)strlen(sendBuf), 0 );
if(false == theInstance.addToLog(m_IDEntry))
{
addData(ConsoleLog,rec,0,3);
}
if (iResult == SOCKET_ERROR) {
closesocket(connectSocket);
WSACleanup();
serverConnect();
iResult = send( connectSocket, sendBuf, (int)strlen(sendBuf), 0 );
}
if (iResult != SOCKET_ERROR) {
addData(ConsoleLog,rec,0,1);
}
iResultRcv = recv(connectSocket, recvbuf, recvbuflen, 0);
if ( iResultRcv <= 0 )
{
addData(ConsoleLog,rec,0,7);
}
}
我希望有人能帮我。
不要调用WSACleanup。WSACleanup是在您不想再进行任何套接字通信时使用的。你不是这样的。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- SQL Server 2016 CLR 存储过程错误:"A system assertion check has failed"
- ODBC 错误"String data, right truncation State code: 22001"与 SQL Server 数据库
- 由于WSACleanup,sql server已消除错误
- 调试.dll C++时出现MS SQL Server 2008错误17058
- C++套接字编程:sendto()和recvfrom()错误代码10038和in 'server'绑定失败,10038
- GetTokenInformation在windows server 2003上失败(错误998),但在2008上工作
- windows server 2008上的c++ fopen错误
- 如何在Windows Server 2012上工作时出现"OverflowError: Python int too large to convert to C long"错误进行转换?
- SQL Server Compact Edition 3.5 为简单查询提供"Multiple-step operation generated errors"错误
- 返回序列时出现分段错误CORBA c++ Server Java Client
- sql server错误日志输出错误
- QODBCResult::exec: 无法执行语句:"[Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误
- 由于系统错误8 (SQL Server)错误,无法加载指定的驱动程序
- "The requested URL /announce was not found on this server" bittorrent HTTP 请求的错误