C++ Socket如何支持跨平台?
来源:互联网 发布:苹果电脑系列介绍知乎 编辑:程序博客网 时间:2024/05/14 04:15
上周,在调试cocos2d-x内置的telnet服务器CCConsole时发现,CCConsole在windows上运行时可以正常启动,但只要一连接telnet客户端就会crash,出错的位置在write()函数,是一个Assert错误,提示file handler 不能大于32;但是,在mac,ios,android(linux还没有测试)都是OK的。
在vs上单步跟了几遍,没看出什么问题,看来得另想办法,我知道winsock的api和unix socket有一些区别,所以考虑用winsock重写一个telnet服务器。先查一下msdn,看看Winsock的函数列表...等等,好像没有write()/read()函数....只有send()/recv(),看来问题很有可能出在这里...把所有的write/read改成send/recv,在windows下测试,可以正常启动telnet了,也可以发命令了,但退出的时候还是会崩溃,出错的位置是close(),原因和前面一样,winsock没有close()函数,要用closeSocket()来关闭socket连接。
问题搞定了,但要吐槽一下winsock,为什么不完全兼容unix socket的api呢?不但没有在编译的时候提示,运行时出错也完全没有可用的提示!!太坑了
0 0
- C++ Socket如何支持跨平台?
- C#Socket 文件传输,支持断点续传
- C#Socket 文件传输,支持断点续传
- C#Socket 文件传输,支持断点续传
- 跨平台C++ 功能全面的Socket类库,支持TCP,UDP,限速等等
- Socket.IO:支持WebSocket协议、用于实时通信和跨平台的框架
- Socket.IO:支持WebSocket协议、用于实时通信和跨平台的框架
- 支持跨平台
- 跨平台Socket编程
- 跨平台Socket封装
- 跨平台Socket封装
- 跨平台Socket封装
- cocos2dx 跨平台Socket
- Metro开发中的Socket支持(C#)
- .net平台下C#socket通信
- linux c socket之通用socket,支持ipv4和ipv6
- Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台)
- Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台)
- iOS开发小技巧:私有API及不常用的API汇总
- POJ 2391 Ombrophobic Bovines 二分拆点最大流+floyd(高精度)
- 飞思卡尔(一)电源模块
- nagios监控linux
- Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)
- C++ Socket如何支持跨平台?
- linux centos6.5 2.6.32-431.el6.x86_64 php5.5.9 apache2.4.7 mysql5 最新快速编译安装
- HYPACK的硬件OFFSET设置问题
- 枚举(1111)
- Visual Studio 2010 搭建OpenCV2.48
- 我的shiro之旅: 十一 shiro的权限设计
- Dynamics CRM 2013 Message List
- Shiro-1.2.2内置的FilterChain
- mm.cpp/c/pas