回去

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/joying0000/article/details/186963

                                                             回去

        进入十月以来,广州就一片阴霾,偌大的城市仿佛被浓雾重重地笼罩着。走在路上,有时百米开外就辨不清方向。
        下了公交车,我踏上这条熟悉的便径。穿过G大,走过她校门口林立的小食店以及破旧的宿舍群,跨入H大。我在H大湖边的一栋宿舍楼里给她宿舍挂了个电话,话筒那头传来机械的回音:“对方电话故障。”我不禁有些茫然。来之前并没有和她约好,现在怎么找她呢?她是从来不接听手机来电的。手机?!我忙拨通自己宿舍的电话,让阿坤帮忙发信息给她:“……记住号码了吗?好。就说我在H大的湖边等她到六点。好,就这样。”
        H大的湖边素有情侣胜地之称。每次过来,她都会带我到这湖边的石椅坐一会儿。但我们不是情侣。湖面烟雨迷茫,人工饲养的猫鱼不住的探出头来喘息。对水的依恋及对大地的向往也一样使它们矛盾而茫然吗?有她在身旁的时候,我总有一种超然世外的感觉,就好象闹哄哄的世界一下子被她用魔法关在了门外。我慵懒的瘫坐在石椅上,听她说着最近生活中的人和事,间或加点自己的看法。时间往往就那样悄悄地从我们身旁溜过,不着痕迹。记得我曾经给她讲过鱼儿的故事:鱼儿躺在鱼缸底看着别的鱼为取悦主人而在那里搔手弄姿,但它却坚持那样躺着,连主人喂的食物也不去争抢。后来主人以为鱼儿死了,就把它捞出来想扔掉。鱼儿问主人:“你想干什么?”主人说:“我以为你死掉了。你为什么不游水啊?”鱼儿说:“那样不好吗?”“但你是鱼啊。鱼都应该游水的。”“那样不好吗?”鱼儿坚持。结果主人把鱼儿扔给猫吃了。“做自己真好,不用管世界的框框条条,”我对她说。“但那样最终会被社会淘汰的啊!”她显得有点忧郁。“只要有你在,不管是放弃整个世界或悲起更多的规矩我都心甘情愿。”我并没说出口,只是对她笑笑……
        身后走道上去打饭的人渐渐多起来,我看见时间在远处舞蹈,便又匆匆跑回那栋宿舍楼打电话回宿舍。阿坤碰巧出去了,我只好叫阿三帮我再发一条同样的信息。从宿舍楼走回湖边,我想象着她已经去到那里,正一张张椅子的找寻我。我甚至开始想象当她忽然转身看到我时的那种喜悦,微微上翘的小嘴。可是没有,黝黑的石椅孤独地在烟雾凄迷的湖边座着……

展开阅读全文

很适合回去好好研究!欢迎指正!!

12-20

目的:rn 利用ServerSocket的ReciveBuf将接受到的自己消息定义rn的保存在自己定义的消息列表中,保存了若干消息后开始处理,rn一直到消息列表为空。rnrn思路:rn 消息列表就是一个队列,FIFO处理方式,每次取头部Head作rn为目前处理的消息,然后head后移,此时设置bool变量isover=F,rn只有处理完毕才设置为T,才能取得新的head。endnode为最后的rn结点,每次都把新消息插入到endnode后,因为消息的长短不同rn,所以定义了一个足可以容纳所有消息长度的结构,在接受和取rn消息时作buffer,因为所有的消息有共同的部分,可以根据共同rn部分的内容来作出不同的处理。rnrn发送消息方法:rn 两个BUTTON,BUTTON1发送消息A,BUTTON2发送消息B,可以重复rn发送。rnrn处理消息方法:rn Button3Click() 开始处理消息。rnrnrn//------------------------------------------rn#ifndef Unit1bakHrn#define Unit1bakHrn//---------------------------------------------rn#include rn#include rn#include rn#include rn#include rntypedef struct tagMSGHEADERrnrn AnsiString cmd;rnMSGHEADER;rn//buffer belowrntypedef struct tagCMDLISTSrnrn MSGHEADER msgheader;rn char body[100];rn tagCMDLISTS *next;rn CMD_LISTS;rnrntypedef struct a //消息Arnrn MSGHEADER msgheader;rn int ia;rns_a;rnrntypedef struct b //消息Brnrn MSGHEADER msgheader;rn int ib;rn char char_b;rn s_b;rnrnbool isover;rnCMD_LISTS *head,*cmdMsg,*newhead,*cmdList;rnCMD_LISTS *curJob,*endnode;rn//---------------------------------------------------------rnclass TForm1 : public TFormrnrn__published: rn TClientSocket *CS1;rn TServerSocket *SS1;rn TButton *Button1;rn TEdit *Edit1;rn TButton *Button2;rn TButton *Button3;rn void __fastcall FormCreate(TObject *Sender);rn void __fastcall Button1Click(TObject *Sender);rn void __fastcall SS1ClientRead(TObject *Sender,rn TCustomWinSocket *Socket);rn void __fastcall Button2Click(TObject *Sender);rn void __fastcall FormDestroy(TObject *Sender);rn void __fastcall Button3Click(TObject *Sender);rnprivate: rnpublic: rn __fastcall TForm1(TComponent* Owner);rn void __fastcall DoCurJob(CMD_LISTS*cmdMsg);rn;rn//------------------------------------------------------rnextern PACKAGE TForm1 *Form1;rn//-----------------------------------------------------rn#endifrn*******************************************************rn#include rn#pragma hdrstoprn#include "Unit1bak.h"rn//--------------------------------------------------rn#pragma package(smart_init)rn#pragma resource "*.dfm"rnTForm1 *Form1;rn//------------------------------------------------rn__fastcall TForm1::TForm1(TComponent* Owner)rn : TForm(Owner)rnrnrn//--------------------------------------------------rnvoid __fastcall TForm1::FormCreate(TObject *Sender)rnrn CS1->Host="127.0.0.1";rn CS1->Port=8888;rn SS1->Port=8888;rn CS1->Active =true;rn SS1->Active = true;rn isover=true; rn head=new CMD_LISTS;rn head->msgheader.cmd=""; //表示消息队列为空rn head->next=NULL;rnrn cmdList=new CMD_LISTS;rn cmdMsg=new CMD_LISTS;rn endnode =new CMD_LISTS;rnrn//-------------------------------------------------rnvoid __fastcall TForm1::Button1Click(TObject *Sender)rnrn s_a *a=new s_a;rn a->msgheader.cmd="a";rn a->ia=10;rn CS1->Socket->SendBuf(a,sizeof(s_a));rnrn//-------------------------------------------------rnvoid __fastcall TForm1::Button2Click(TObject *Sender)rnrn s_b *b=new s_b;rn b->msgheader.cmd="b";rn b->ib=20;rn b->char_b ='b';rn CS1->Socket->SendBuf(b,sizeof(s_b));rnrn//--------------------------------------------------rnvoid __fastcall TForm1::SS1ClientRead(TObject *Sender,rn TCustomWinSocket *Socket)rnrn Socket->ReceiveBuf(cmdList,sizeof(CMD_LISTS));rn //加入到消息队列中去rn if(head->msgheader.cmd=="") //消息队列为空rn rn //根据消息的不同保存不同的部分rn if(cmdList->msgheader.cmd=="a")rn rn s_a *tempD=new s_a ; //head;rn s_a *tempS=(s_a*)cmdList;rnrn tempD->msgheader.cmd="a";rn tempD->ia=tempS->ia;rnrn head=(CMD_LISTS*)tempD;rn endnode=head;rn endnode->next=NULL; //最后节点即为头节点 rn ShowMessage(++count);rn rnrn if(cmdList->msgheader.cmd=="b")rn ShowMessage("s_b as head");rn s_b *tempD=new s_b;// head;rn s_b *tempS=(s_b*)cmdList;rnrn tempD->msgheader.cmd="b";rn tempD->ib=tempS->ib;rn tempD->char_b=tempS->char_b;rnrn head=(CMD_LISTS*)tempD;rn endnode=head;rn endnode->next=NULL; //最后节点为头节点rn ShowMessage(++count);rn rn rn else //放在最后rn rn if(cmdList->msgheader.cmd=="a")rn rn s_a *tempS=(s_a*)cmdList;rn s_a *tempD=new s_a;rnrn tempD->msgheader.cmd="a";rn tempD->ia=tempS->ia;rnrn CMD_LISTS*temp=(CMD_LISTS*)tempD;rn endnode->next=temp;rn endnode=temp; //放在最后rn endnode->next=NULL; rn rnrn if(cmdList->msgheader.cmd=="b")rn rn s_b *tempS=(s_b*)cmdList;rn s_b *tempD=new s_b;rnrn tempD->msgheader.cmd="b";rn tempD->ib=tempS->ib;rn tempD->char_b=tempS->char_b;rnrn endnode->next=(CMD_LISTS*)tempD; //放在最后rn endnode=(CMD_LISTS*)tempD; //endnode向后移动rn endnode->next=NULL; rn rn rn //....... if() //处理其它的消息方法类似rnrn rn //保存消息完毕rnrnrn// --------------------------------------------------rnvoid __fastcall TForm1::DoCurJob(CMD_LISTS* cmdMsg)rnrnrn //开始处理 cmdMsgrn if(cmdMsg->msgheader.cmd=="a")rn rn s_a *sa=(s_a*)cmdMsg; rn ShowMessage(AnsiString(sa->ia));rn isover=true; rn rnrn if(cmdMsg->msgheader.cmd=="b")rn rn s_b *sb=(s_b*)cmdMsg; rn ShowMessage(AnsiString(sb->ib)+"\n"+AnsiString(sb->char_b ));rn isover=true; rn rnrn//----------------------------------------------------rnrnrnvoid __fastcall TForm1::FormDestroy(TObject *Sender)rnrn delete head;rn delete cmdList;rn delete cmdMsg;rn delete endnode;rnrn//--------------------------------------------------rnrnvoid __fastcall TForm1::Button3Click(TObject *Sender)rn //消息队列不空且当前消息处理完成rn while ((head->msgheader.cmd!="")&&(isover)) rn rn cmdMsg=head; //得到最早的消息rn isover=false; rn DoCurJob(cmdMsg); //处理消息rn rn //开始设置新的头部rn if(head->msgheader.cmd!="") //还有消息rn rn head=head->next;rn rn else //消息队列为空了,新的消息将作为头部rn rn head->msgheader.cmd="";rn head->next=NULL;rn rn //设置新的头部完毕rn //end whilernrnrn//--------------------------------------------------rn上面的代码,可以运行,但是结果不好,经常访问冲突?rn我认为是对队列的处理不好,象head和endnode,经常移动,rn也不知道什么时候该delete.rn 论坛

没有更多推荐了,返回首页