1 使用mingw64和 msys2移植linux C的socket服务器端代码到windows平台(代码未做任何修改,使用linux中头文件),生成windows的.exe可执行程序,编译成功(编译时添加-lws2_32)。
但是执行 socket(AF_INET, SOCK_STREAM, 0); 时返回-1
2 使用cygwin编译代码,编译通过,执行情况一样
mingw64+msys2
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 【以下回答由 GPT 生成】
### 解决方案 根据你描述的情况,你已经成功地将代码移植到Windows平台,并且使用了-lws2_32选项进行编译。然而,你在执行socket(AF_INET, SOCK_STREAM, 0)时遇到了问题,返回值是-1。 这种情况通常是由于在Windows下调用socket函数时需要先初始化Winsock库。你需要在代码中添加对Winsock库的初始化和清理代码。 以下是具体的解决方案: 1. 在代码中包含Winsock库的头文件: ```c #include <winsock2.h> ``` 2. 初始化Winsock库,在调用socket函数之前加入以下代码: ```c WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { // 处理初始化失败的情况 } ``` 3. 在程序结束时清理Winsock库,在关闭socket和退出程序之前加入以下代码: ```c WSACleanup(); ``` 4. 最后重新编译代码并执行,应该能够成功调用socket函数并返回正确的套接字描述符。 希望以上方法能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
- ¥20 Java-Oj-桌布的计算
- ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
- ¥20 有人知道这种图怎么画吗?
- ¥15 pyqt6如何引用qrc文件加载里面的的资源
- ¥15 安卓JNI项目使用lua上的问题
- ¥20 RL+GNN解决人员排班问题时梯度消失
- ¥60 要数控稳压电源测试数据
- ¥15 能帮我写下这个编程吗
- ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路