求ACE编写的通信程序,要求是传一个数据结构……
具体要求是客户端发一个数据结构,比如结构体给服务器,然后服务器接收并输出,本人刚开始接触ACE,但是这个应用又急需…… 不要用ACE写,如果你初学ACE,又着急的话。先完成任务第一。 对于缺乏基础的兄弟,ACE的难度和学习曲线会超出你的想象。 :D :D :D :D :D[ 本帖最后由 marry 于 2008-11-21 17:05 编辑 ]
这个应该使用CDR来解决了
也就是说你要对所谓整编,解编理解才行。非常好解决。参考第一册中的日志例子代码就能搞定。 大家何必把网络编程非要和ACE强求的联合在一起呢?所有的TCP/IP协议的网络编程思想都是一样的。
ACE只不过是把这些思想融合有序的组织在一起、共广大程序员使用,是我们无需在去做那么多重复的劳动而已。
至于网络编程的思想分为2大块。
1 关于UDP方面的编程
2 关于TCP方面的编程
比如在非常典型的VOIP协议 H.323中,TCP和UDP的编程应用就非常的经典。
一般来说UDP编程是相对简单,就是收包和发包,无需自己分割每一个包,但是必须负责重传。
而TCP则与UDP相反,不需要自己处理重传,但是需要自己分割每一个包,因为TCP是流,你可以把流想象为长江的流水。而不是一座座山峰。要把江河的水隔开你必须有水闸。这个水闸就是你程序中定义的规则用于分割数据流的。
多接触一些就知道这里面的奥妙的。其实等你懂了以后这些道理非常简单的。但是对于刚入门的网络编程者、这方面确实有点难理解。
关键的要点还是要充分的理解TCP/IP协议。 别的地方看的,我就放到论坛上,以后好查阅
写函数如下:
ACE_Message_Block* mblk = new ACE_Message_Block(sizeof(Struct));
ACE_CDR::mb_align(mblk);
memcpy(mblk->wr_ptr(), struct_, sizeof(Struct));
读函数如下:
ACE_Message_Block* chunk=null;
Msg *struct_=new Struct;
memset(struct,0,sizeof(Struct));
memcpy(struct,chunk->rd_ptr(),sizeof(Struct));
其他类型按照此方法应该也可以
页:
[1]