关于扩展DLL中Socket(10038)的问题。

my15y 2005-02-14 11:12:55
我在扩展dll中使用winsock但是返回10038错误,说:描述符不是套接字 但我定义的SOCKET s 确实没错。并在win32 exe中测试通过。以下是函数部分:并在头文件中也包含winsock.h 和lib

FtpStart(CString hostname, CString FilePath, CString FileName, int Port, int ThreadNumber, CString SaveTo)
{
char buf[bufsize];
WORD wVersionRequested;
WSADATA wsaData;
int sockerror;
wVersionRequested=MAKEWORD(1,1);
sockerror=WSAStartup(wVersionRequested,&wsaData);
if (sockerror !=0) {
AfxMessageBox("WinSock初始化失败");
WSACleanup();
exit(1);
}
if (LOBYTE(wsaData.wVersion) !=1 || HIBYTE(wsaData.wVersion) !=1)
{
AfxMessageBox("您的系统不支持winsock1。1版");
WSACleanup();
exit(1);
}

SOCKET s;
if (s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP) ==SOCKET_ERROR) {
AfxMessageBox("Socket创建失败");
WSACleanup();
exit(1);
}
int bNodelay = 1;
/*if (setsockopt(s,IPPROTO_TCP,TCP_NODELAY,(char *) &bNodelay,sizeof(bNodelay)) ==SOCKET_ERROR) {
AfxMessageBox("Socket设定失败");
WSACleanup();
exit(1);
}*/
sockaddr_in addr;
sockaddr_in ServAddr;
addr.sin_family=AF_INET;
addr.sin_port=0;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
/*if (bind(s,(LPSOCKADDR)&addr,sizeof(addr)) ==SOCKET_ERROR) {
printf("bind错误");
exit(1);
}*/
ServAddr.sin_port=htons(Port);
ServAddr.sin_family=AF_INET;
/*sockaddr_in sa;
CString ServIP;
struct hostent *phe;
if (phe=gethostbyname(hostname)) {
for (int nAdapter=0; phe->h_addr_list[nAdapter]; nAdapter++) {
memcpy (&sa.sin_addr.S_un.S_addr,phe->h_addr_list[nAdapter],phe->h_length);
}
}
else {
AfxMessageBox("无法解析主机名"+hostname);
WSACleanup();
exit(1);
}
ServIP=inet_ntoa(sa.sin_addr);
*/
ServAddr.sin_addr.S_un.S_addr=inet_addr(ServIP);

if (connect(s,(LPSOCKADDR)&ServAddr,sizeof(ServAddr))==SOCKET_ERROR) {
AfxMessageBox("无法连接到主机");
WSACleanup();
exit(1);
}
CString Rmsg;
Rmsg=OnRecv(s,buf);
return 0;
}

...全文
141 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
my15y 2005-02-16
  • 打赏
  • 举报
回复
setsockopt 和connect函数都会出现10038错误
somedummy 2005-02-14
  • 打赏
  • 举报
回复
哪一个函数调用导致10038的?

这个函数也庞大了一点吧?不能拆分一下吗?
内容概要:本文出自罗兰贝格关于工业4.0现状的报告,系统分析了制造业在数字化转型过程的实际进展与挑战。报告指出,尽管“工业4.0”概念提出已逾十年,但多数企业仍未实现预期的智能化、自组织生产目标,主要受限于技术复杂性、组织孤岛、投资回报周期长及人才短缺等问题。通过对领先制造企业的研究,报告提炼出三大成功要素:一是制定基于现实的工业4.0愿景与全面战略,明确用例优先级;二是建立“心辐射式”组织架构,设立专职数字化制造部门,推动跨职能协作与规模化落地;三是构建统一的IT/OT目标架构,强化数据生态与系统互操作性。报告特别强调,高价值用例如预测性维护、实时参数优化、视觉检测等已在汽车与半导体行业显现显著成效,企业应聚焦可量化回报的场景,结合资源现实,分阶段推进转型。; 适合人群:制造业企业管理者、数字化转型负责人、工业互联网从业者及政策制定者; 使用场景及目标:①帮助企业评估自身工业4.0成熟度并制定务实发展战略;②为制造企业设计组织架构与IT/OT技术路线图提供参考;③指导资源优先配置于高价值数字化用例,提升投资回报率; 阅读建议:建议结合企业实际生产场景阅读,重点关注“心辐射式”运营模式与六大高价值用例的适用性分析,同时参考报告的汽车行业案例,因地制宜地规划数字化路径。
内容概要:本文围绕基于蚁狮优化算法(ALO)在复杂三维动态环境下求解多无人机动态避障路径规划问题展开研究,并提供了完整的Matlab代码实现。该研究旨在解决多无人机系统在存在障碍物和动态变化环境的高效、安全路径规划挑战,通过引入ALO算法优化飞行轨迹,有效规避障碍并实现路径最优。研究不仅关注算法层面的实现,还涵盖了目标函数设计、约束条件处理、环境建模等关键技术环节,确保路径规划结果兼具可行性与鲁棒性。此外,文档附带丰富的相关科研资源,涵盖路径规划、智能优化算法、机器学习、电力系统等多个领域,为后续拓展研究提供坚实支撑。; 适合人群:具备一定编程基础,熟悉Matlab工具,从事无人机路径规划、智能优化算法或智能系统研究的科研人员及研究生。; 使用场景及目标:①研究复杂三维动态环境下多无人机的协同避障路径规划问题;②掌握蚁狮优化算法(ALO)在路径规划的应用与实现机制;③为智能交通、无人系统控制、自动化调度等相关课题提供算法参考与代码支持; 阅读建议:建议结合Matlab代码深入理解ALO算法的具体实现流程,重点关注目标函数构建、动态障碍建模与避障策略设计等关键模块,同时可参照文提及的其他智能优化算法(如PSO、GWO等)进行对比实验,进一步提升算法性能分析与工程应用能力。
代码下载地址: https://pan.quark.cn/s/a4b39357ea24 Git在全球范围内被公认为最为流行的分布式版本控制系统,其在软件开发行业占据着不可或缺的地位。Git-2.21.0-64-bit 以及 TortoiseGit-2.8.0.0-64bit 是两款专门为Windows操作系统设计的Git相关软件。Git-2.21.0-64-bit 代表了Git的命令行版本,而TortoiseGit则是一个图形化界面工具,它为用户呈现了一种更为直观的操作体验。 Git的主要优势体现在其分布式架构上。每一个通过Git克隆得到的仓库都是一个自给自足的、完整的文件库,其包含了所有的历史版本记录以及修订追踪详情。因此,即便在缺乏网络连接的环境下,开发者依然能够在本地执行版本控制任务,例如进行提交、切换分支以及合并代码等操作。这种架构设计显著提升了开发效率,特别是在处理大型项目或进行团队协作时更为明显。 Git的分支管理功能是其另一项突出的能力。开发者借助简单的指令即可迅速完成分支的创建、切换和合并,这一特性对于并行开发、试验新功能或解决bug等问题提供了极大的便利。例如,开发者可以开辟一个新分支来实施新功能,在开发完成后将其整合回主分支,而不会对其他团队成员的工作造成干扰。 TortoiseGit是Git的一个补充工具,它将Git的操作指令无缝嵌入到Windows资源管理器,使得Git的使用体验类似于常规的文件管理操作。TortoiseGit-2.8.0.0-64bit.msi 文件正是这个图形化界面的安装包,它提供了右键菜单的快捷方式,让用户能够更加便捷地进行版本控制活动。与此同时,TortoiseGit-LanguagePack-2.8.0.0...

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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