socketerror10053,10054究竟是怎么引起的
答案:2 悬赏:20
解决时间 2021-01-21 21:18
- 提问者网友:玫瑰园
- 2021-01-21 00:59
socketerror10053,10054究竟是怎么引起的
最佳答案
- 二级知识专家网友:爱难随人意
- 2019-07-24 02:48
1、可能软件的其它地方关闭了socket; 2、可能对端已关闭了连接。 3、socket被其他线程关闭你会收到10053,可能你内存访问越界。 4、检查下你的逻辑错误,别访问非法内存,写网络程序指针多做判断释放要安全释放. 5、还有一个问题,创建无法连接...
全部回答
- 1楼网友:千夜
- 2019-06-25 00:55
word versionrequested;
wsadata wsadata;
versionrequested = makeword(2, 2);
if (wsastartup(versionrequested, &wsadata))
return -1;
socket socketserver = socket(af_inet, sock_stream, ipproto_tcp);
sockaddr_in addrserver;
addrserver.sin_addr.s_un.s_addr = inet_addr("127.0.0.1");
addrserver.sin_port = htons(9999);
addrserver.sin_family = af_inet;
// 连接服务器
if (0 != connect(socketserver, (sockaddr *)&addrserver, sizeof(sockaddr)))
{
closesocket(socketserver);
return false;
}
int err = 0;
char temp[] = "hello, server";
int rs = send(socketserver, temp, sizeof(temp) + 1, 0);
char buff[1024] = {0};
rs = recv(socketserver, buff, sizeof(buff), 0);
// 下面这2句代码如果注释掉,后面的recv就能正解的返回0。如果不注释掉,recv就会返回-1,
// 并得到10053这个错误
rs = send(socketserver, temp, sizeof(temp) + 1, 0);
err = wsagetlasterror();
rs = recv(socketserver, buff, sizeof(buff), 0);
err = wsagetlasterror();
system("pause");
return 0;
这个是服务器的:
[cpp] view plaincopy
word versionrequested;
wsadata wsadata;
versionrequested = makeword(2, 2);
if (wsastartup(versionrequested, &wsadata))
{
printf("加载socket库失败!\n");
return -1;
}
// 监听来自浏览器的请求
socket sockserver = socket(af_inet, sock_stream, ipproto_tcp);
sockaddr_in addrclient;
addrclient.sin_family = af_inet;
addrclient.sin_addr.s_addr = inaddr_any;
addrclient.sin_port = htons(9999);
if (sockserver == invalid_socket)
{
printf("socket初始化失败!\n");
closesocket(sockserver);
wsacleanup();
return -1;
}
if (bind(sockserver, (sockaddr*)&addrclient, sizeof(addrclient)) != 0)
{
printf("socket绑定失败!\n");
closesocket(sockserver);
wsacleanup();
return -1;
}
if (listen(sockserver, 10) != 0)
{
printf("socket监听失败!\n");
closesocket(sockserver);
wsacleanup();
return -1;
}
while (1)
{
socket newsocket = accept(sockserver, null, null);
if (invalid_socket == newsocket)
{
closesocket(newsocket);
continue;
}
else
{
struct linger so_linger;
so_linger.l_onoff = 1;
so_linger.l_linger = 30;
setsockopt(newsocket ,sol_socket, so_linger, (const char*)&so_linger, sizeof(so_linger));
}
char buff[1024];
int rs = recv(newsocket, buff, sizeof(buff), 0);
char temp[] = "hello, client";
rs = send(newsocket, temp, sizeof(temp) + 1, 0);
closesocket(newsocket);
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯