|
아래소스에 간단히 주석첨부하였구요.
텍스트가 깨지는 이유는 받아온버퍼문제 인듯하네요.
패킷을 보내고 받고 할때.. 이어받기 부분이 필요할수도 있습니다.
이희성 님이 쓰신 글 :
: void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
: TCustomWinSocket *Socket)
: {
: AnsiString r_temp;
: int ReceiveSize = 0;
: if(ServerSocket1->Socket->Connected) //Connected상태 확인후
: {
: ReceiveSize = Socket->ReceiveLength(); //recv 데이터 의 길이를 받아서
: if(ReceiveSize==2) //사이즈가 2와 같다면.
: {
: char *Buf = new char[ReceiveSize]; //메모리 할당후
: Socket->ReceiveBuf(Buf, ReceiveSize); //버퍼를 복사
: Memo2->Lines->Text =Memo2->Lines->Text+Buf; // 메모장->Text에 버퍼값을 포함시킨다.
: }
: }
: }
: /*
: char n;
: if(ServerSocket1->Socket->Connected)
: {
: Socket->ReceiveBuf(&n,1);
: AnsiString str;
: str.printf("%X",n);
: Memo2->Lines->Text =Memo2->Lines->Text+str;
: }
: }*/
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::ServerSocket1ClientWrite(TObject *Sender,
: TCustomWinSocket *Socket)
: {
: if(ServerSocket1->Socket->Connected) //connected상태를 확인후
: {
: AnsiString Buf ="987654321";
: Socket->SendBuf(Buf.c_str(), Buf.Length()); // 버퍼를 Send
: }
: }
:
: 위에 두함수를 첨부하였는데여 각각 어떨때 동작하는 함수인지 설명좀 부탁드립니다.
: 그리고 그중 위에 함수는 네트웍을 통해 받은 데이터가 있을 경우 받은 데이터를 스트링으로 메모장으로 뿌려주는데여
: 데이터가 깨져서 나옵니다... 가끔 제가 보낸 데이터가 쭉 나오다가 깨지고 이런 현상을 반복합니다.
: 이유가 어쨌든 if(ServerSocket1->Socket->Connected) 상태라면 지금 어떻게 진행이 되는건지좀 알려주세여?
: 그럼 오늘두 좋은 하루 되시구여.. 정말 오랜만에 들어왔네여!!!
|