Winsocket分发多个不同的数据包,怎么标示,怎么接收
Winsocket分发多个不同的数据包,如何标示,如何接收,求救
比如服务器发送不同的数据包,如何表述,客户端如何识别。给个实例讲讲
------解决方案--------------------
比如服务器发送不同的数据包,如何表述,客户端如何识别。给个实例讲讲
------解决方案--------------------
- C/C++ code
//兄弟啊,我給你方法,你要舉一反三 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { IdTCPServer1->DefaultPort = 8001 ; IdTCPClient1->Host = "127.0.0.1" ; IdTCPClient1->Port = 8001 ; IdTCPServer1->Active = true ; IdTCPClient1->Connect(); } //--------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { IdTCPClient1->WriteLn("@#发送的数据#@"); IdTCPClient1->WriteLn("#&3860&#"); //以&#为整个数据的结尾符号 } //--------------------------------------- void __fastcall TForm1::IdTCPServer1Execute(TIdPeerThread *AThread) { AnsiString Str = AThread->Connection->ReadLn() ; Memo1->Lines->Add(Str) ; } //--------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString s ; for(int i=0 ;i<Memo1->Lines->Count;i++) { s += Memo1->Lines->Strings[i] ; } int pos1 = s.Pos("@#"); int pos2 = s.Pos("#@"); int pos3 = s.Pos("#&"); int pos4 = s.Pos("&#"); if(pos1>0&&pos2>0) { Memo2->Lines->Add(s.SubString(pos1+2, pos2-pos1-2)); } else { ShowMessage("没有找到监测数据包识符,请继续接收数据"); } if(pos3>0&&pos4>0) { Memo2->Lines->Add(s.SubString(pos3+2,s.Length() -pos3 - 3)); } else { ShowMessage("没有找到控制数据包识符,请继续接收数据"); } } //---------------------------------------