Tcp ip recv总是返回10060,但又能正常接收发送数据?

t101706 t101706 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

bool CCoffee::Connect(void)
{
u_long ulTmp;
SOCKADDR_IN SockAddr;

Disconnect(); // 断开连接

// 创建socket
mc_SendSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
if(mc_SendSocket == INVALID_SOCKET)
goto ErrEntry;

// 设置socket为阻塞方式
ulTmp = 0;
if(ioctlsocket(mc_SendSocket, FIONBIO, &ulTmp) != 0)
goto ErrEntry;

// 设置socket发送超时
if(setsockopt(mc_SendSocket, SOL_SOCKET, SO_SNDTIMEO, (char *)&mc_nSendTimeOut, sizeof(mc_nSendTimeOut)) != 0)
goto ErrEntry;

if(setsockopt(mc_SendSocket, SOL_SOCKET, SO_RCVTIMEO, (char *)&mc_nRecvTimeOut, sizeof(mc_nRecvTimeOut)) != 0)
goto ErrEntry;
// 连接服务端
InitSockAddr(&SockAddr, mc_ServerIpAddr.GetBuffer(), mc_Port);
if(connect(mc_SendSocket, (sockaddr *)&SockAddr, sizeof(SOCKADDR_IN)) != 0)
goto ErrEntry;


return TRUE;
ErrEntry:
int i = GetLastError();
Disconnect();
return FALSE;
}

void CCoffee::SendRecv(void)
{
char Buf[32768] = {0}; // 接收缓冲区
int nErr;
while(true)
{
memset(Buf,0,32768);
nErr = recv(mc_SendSocket, Buf, 32768, 0);

if(nErr == SOCKET_ERROR) // 有错误发生
{
nErr = WSAGetLastError();
if(nErr == WSAECONNRESET) {
// socket连接被peer端关闭,虚电路复位等错误,出现此类型的错误时socket必须被关闭。
//ForcePostMessage(WM_SOCKETCLOSE, 0, (LPARAM)m_pTcpClient);
break;
}
else
{

//ForcePostMessage(WM_SOCKETRECVERR, 0, (LPARAM)m_pTcpClient);
}
}
else if(nErr == 0) // socket被动关闭
{
//ForcePostMessage(WM_SOCKETCLOSE, 0, (LPARAM)m_pTcpClient);
break;
}
else // 接收到数据
{
SendDoRecv(Buf, nErr); // 处理接收到的数据
}
}; // while
}



...全文

相关推荐

Windows C++ TCP通信实战:从Winsock API到粘包处理与编译避坑

TCP(传输控制协议)是网络编程中实现可靠数据传输的核心基石,它通过面向连接、数据确认和重传机制确保字节流的准确送达。Socket(套接字)作为其编程接口,为进程间通信提供了端点抽象。在Windows平台,Winsock API是实现Socket编程的标准库,其价值在于为构建高性能、稳定的网络应用(如游戏服务器、即时通讯系统)提供了底层支持。掌握Winsock的初始化、地址绑定、监听与连接流程,是进行C++网络开发的必备技能。实践中,开发者常需处理TCP粘包/拆包问题,并需注意在Visual Studio与

weixin_30564901

保姆级教程:用C# Socket搞定安川MP3300控制器TCP通讯(附避坑指南)

本文提供了一份详细的C#与安川MP3300控制器TCP通讯全流程指南,涵盖控制器配置、协议解析到代码调试的完整知识链条。特别针对工业控制领域的TCP通讯特点,解析了MP3300作为服务端时的连接机制,并提供了必备工具清单、配置参数对照表及常见故障排查方案,帮助开发者高效实现上位机与安川控制器的稳定通讯。

weixin_30954265

产业园区如何精准识别和匹配优质科技成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

【基于dq控制算法的并联有源滤波器】分流有源滤波器的仿真电路可以减轻谐波和无功功率(simulink仿真实现)

内容概要:本文详细介绍了基于dq控制算法的并联有源滤波器(APF)在Simulink环境下的仿真电路设计与实现过程,重点阐述了通过分流式拓扑结构有效抑制电力系统中的谐波污染并补偿无功功率的技术方案。文中深入剖析了dq变换的核心原理,将其应用于控制系统中,实现三相交流量到直流量的转换,从而简化控制器设计并提升动态响应精度。仿真模型完整构建了主电路、负载模块及控制策略三大组成部分,能够直观呈现滤波前后电流波形的改善效果,验证了该方法在提高电能质量方面的有效性与可行性。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事电能质量治理、有源滤波器研发及相关领域工程应用的技术人员。; 使用场景及目标:①用于课堂教学与课程设计,帮助学生理解dq变换机制及有源滤波器的工作原理;②为科研项目提供可复现的仿真平台,支持新型控制算法的开发与验证;③辅助企业在实际工程中优化APF产品设计,增强谐波抑制与无功补偿性能。; 阅读建议:建议结合MATLAB/Simulink环境动手搭建与调试模型,深入掌握各控制模块参数整定方法及其对系统性能的影响,可通过改变负载类型或引入非理想工况进行对比分析,以全面提升对系统稳态与动态特性的理解与掌控能力。

大龙不吃小鱼干

国央企创新负责人如何利用平台实现技术成果的精准对接与协同创新?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN
评论 2
收藏 已收藏
分享
返回顶部
t101706
C++ 语言 65,214 成员 250,514 内容