请教我的ACCEPTEX为什么总是返回 10038

【可乐爱加冰】 2006-04-30 01:32:05
#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

不知道为什么出错,请各位大虾指点!
...全文
257 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
DentistryDoctor 2006-05-02
  • 打赏
  • 举报
回复
无效套接字上的套接字操作。

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧