请教我的ACCEPTEX为什么总是返回 10038
#include <stdio.h>
#include <winsock2.h>
#include <mswsock.h>
#include "Accept.h"
#define OP_ACCEPT 2
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "Mswsock.lib")
int main(int argc, char* argv[])
{
WSADATA data = { 0 };
WSAStartup(0x0202,&data);
//建立SOCKET
int m_plisten = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in addr;
addr.sin_port = htons(8080);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("192.168.0.169");
//绑定
if(bind(m_plisten, (struct sockaddr *)&addr, sizeof(addr)) != 0)
{
perror("°ó¶¨IPÓë¶Ë¿Ú ʧ°Ü !");
return -1;
}
//监听
if(listen(m_plisten, 10) != 0)
{
perror("½¨Á¢¼àÌý ʧ°Ü !");
return -2;
}
int AcceptSocket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED);
if(AcceptSocket == INVALID_SOCKET)
{
//--´´½¨SOCKETʧ°Ü
return -1;
}
int SocketRet = -1;
DWORD dwReturnBytes=0;
char buff[1024];
OVERLAPPED app;
app.hEvent = (HANDLE)OP_ACCEPT;
SocketRet = AcceptEx(m_plisten, AcceptSocket, buff, 0,sizeof(SOCKADDR_IN)+16,sizeof(SOCKADDR_IN)+16,&dwReturnBytes, &app);
if(SocketRet == FALSE)
{
SocketRet = WSAGetLastError();
if(SocketRet !=ERROR_IO_PENDING)
{
printf("error %d\n", SocketRet);
}
}
closesocket(m_plisten);
WSACleanup();
return 0;
}
今日预建立完成端口程序,上面为小的测试ACCEPTEX的程序,
执行结果是:屏幕上总是显示 error 10038
不知道为什么出错,请各位大虾指点!