【被C折腾系列】用C调DIOCP编码客户端通信
2015-03-05 23:48
148 查看
前几天有个朋友,说他们公司做手游,服务端用的DIOCP3里面做文件服务器,客户端用cocos-x,在调试与diocp通信时老是失败!
于是,我下载了一个Codeblocks经过几个小时的折腾,终于折腾出来了,把其中的一些心酸记录下,以便以后查阅。
1.windows下面使用socket的一些函数时,需要设置工程的选项或者工具的编译选项
[project –> build options]->[linker settings]或者[setting]->[complier]->Linker settings]中添加
F:\Tools\C\CodeBlocks\MinGW\lib\*.a 到 [link libraries]中
要不然会出现编译错误
undefined reference to `WSAStartup@8'
2.关于c中的extern和static
百度上面有比较多的解释,
extern 表示修饰的函数或者变量是从其他文件中引用。(extern告诉编译器这个变量或者函数在其他文件里已经被定义了)
static 表示修饰的函数或者变量只能在本文件中使用。static还可以修饰局部变量,表示局部变量在退出函数后,该变量不可用,但是再次进入到函数时,该变量会保存之前的值。
下面为调试的截图
上面截图说明与服务器进行了一次通信,服务器接收特定的编码格式(Flag + CheckValue + datalen + data)
发送过去后,服务端会进行编码原样返回。
总结:
接触一门其他语言,需要多去写代码,只有在写的过程当中才会去碰到问题,解决问题,积累被坑的经验。思路和想法有了,剩下的就是多被坑点就好了
于是,我下载了一个Codeblocks经过几个小时的折腾,终于折腾出来了,把其中的一些心酸记录下,以便以后查阅。
1.windows下面使用socket的一些函数时,需要设置工程的选项或者工具的编译选项
[project –> build options]->[linker settings]或者[setting]->[complier]->Linker settings]中添加
F:\Tools\C\CodeBlocks\MinGW\lib\*.a 到 [link libraries]中
要不然会出现编译错误
undefined reference to `WSAStartup@8'
2.关于c中的extern和static
百度上面有比较多的解释,
extern 表示修饰的函数或者变量是从其他文件中引用。(extern告诉编译器这个变量或者函数在其他文件里已经被定义了)
static 表示修饰的函数或者变量只能在本文件中使用。static还可以修饰局部变量,表示局部变量在退出函数后,该变量不可用,但是再次进入到函数时,该变量会保存之前的值。
下面为调试的截图
上面截图说明与服务器进行了一次通信,服务器接收特定的编码格式(Flag + CheckValue + datalen + data)
发送过去后,服务端会进行编码原样返回。
总结:
接触一门其他语言,需要多去写代码,只有在写的过程当中才会去碰到问题,解决问题,积累被坑的经验。思路和想法有了,剩下的就是多被坑点就好了
相关文章推荐
- 进程间通信系列 之 管道(客户端和服务端通信)
- socket系列之socket服务端与客户端如何通信
- 一步步实现自己的框架系列(三):客户端服务端通信的实现
- 【MQTT应用学习系列(一)】Apollo代理+paho_mqtt开发Python客户端实现MQTT简单通信
- socket系列之socket服务端与客户端如何通信
- java通信系列之一by_书訢:通信基础和简单服务器客户端创建
- 进程间通信系列 之 管道(客户端和服务端通信)
- 基于TCP/UDP的Socket网络通信系列之客户端与服务器的简单对话(三)
- 使用 Microsoft 实时通信 API 增强多客户端通信
- 深入Atlas系列:客户端网络访问基础结构(下) - WebRequestExecutor和XMLHttpExecutor
- 深入Atlas系列:客户端代码编写规则分析与指南
- 深入Atlas系列:Web Sevices Access in Atlas(7) - RTM中的客户端支持
- 深入Atlas系列:综合示例(1) - 调用服务器端方法时直接获得客户端具体类型
- 解决workshop开发的服务器端与axis开发的客户端之间的交互通信问题
- 深入Atlas系列:探究序列化与反序列化能力(上) - 客户端支持,JavaScriptTypeResolver与JavaScriptConverter
- 深入Atlas系列:客户端网络访问基础结构(上) - WebRequest的工作流程与生命周期
- 深入Atlas系列:客户端网络访问基础结构示例(1) - 编写并使用自定义的WebRequestExecutor
- 深入Atlas系列:Web Sevices Access in Atlas(7) - RTM中的客户端支持
- Windows系列操作系统对线程间通信的支持——管道与邮路
- [导入]Smart Client系列课程(6):分布式智能客户端应用程序开发最佳实践