实习周记V
来源:互联网 发布:活塞坏孩子军团知乎 编辑:程序博客网 时间:2024/04/28 21:38
2014年12月29日 深圳
休息了一天,消息模拟器完成了一半多了。
早上老大重新布置了任务,需求从MFC改成cocos2d-x跨平台实现,对我的打击不小啊。算是对自己的磨练把,一周的时间也不能算是浪费,还有很多代码可用。
从头到尾看了边自己写的代码,沉余代码太多、耦合度较高、可复用性太低。这次打算开始敲代码前,要仔细想想代码结构。谁知道哪天需求又变了呢?
上午想了服务器线程和客户端线程大致结构,主要注意的就是降耦合、增加复用性。
服务器头文件如下:
class NetServerObject{public:// 连接目标地址bool Listen();// 收到消息包的回调virtual void onMessageReceived(FKCW_SimpleNet_Buffer& oBuffer) = 0;// 连接成功时的回调virtual void onConnected() = 0;// 连接失败时的回调virtual void onDisconnected() = 0;// 连接结束时的回调virtual void onConnectedEnded() = 0;public://初始化virtual bool init();// 设置监听IPvoid setListenHost(short host);// 发送消息包给目标//void send(char* pBuffer, unsigned int uLen);// 关闭当前连接void close();// 发送消息包给目标void Send(FKCW_SimpleNet_Buffer* pBuffer);// 断开当前连接void disconnect();};
NetServerObject是一个抽象类(Java叫法,C++里貌似没有这个词),该类需要继承后实现四个对外暴漏的接口,这样就大大降低了代码耦合度,增加了可复用性。
同时,NetServerObject内部封装了pthread,没实例化一个NetServerObject都会新创建一个新线程,使用时不用在频繁的Create线程了。
2014年12月30日 深圳
写好了NetServerObject类,还有一件很重要的事情需要完善,那就是释放NetServerObject。
delete NetServerObject时,程序直接Down掉,问题的原因应该是在网络保存连接时,突然delete掉内存,其子线程函数也会同样被释放,内存访问异常,所以导致程序跳出。
解决方式可以将线程函数声明为全局函数,这样释放NetServerObject时,子线程依然在工作,ok问题解决。
2014年12月31日 深圳
在2014年的最后一天,明天就元旦放假了,工作起来有点心烦。
老大今天给我放了半天假,下午用OpenGl做了些Shader
不被理解,只有忍耐。2015,你好。
- 实习周记V
- 第二周实习记
- 第三周实习记
- 实习周记I
- 实习周记II
- 实习周记III
- 实习周记IV
- 实习周记VI
- 实习周记(一)
- 暑假实习周记①
- 2015年实习心情周记I
- 2015年实习心情周记II
- 2015年实习心情周记III
- 2015年实习心情周记IV
- 实习周记(附):学习笔记
- 实习第一天---记SunFlame实习
- 第一周实习记
- 第四周实习记
- 破解登陆密码测试
- 高度理性而不是毅力,决心
- [笔记]eclipse性能优化
- Objective-C runtime之消息(二)
- 游戏里的编程游戏
- 实习周记V
- AFViewShaker动画
- 天线 谐振
- 学《云计算应用开发实践》总结<三>
- System.Diagnostics.Process.Start()用法详解
- 助记码的全部更新
- python格式化输出
- cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas
- AJAX技术