Q&A

  • tcp/ip 통신시 두번째 보낼때 오류발생 -> source포함되어있음.
첫번째 보낼때는 정상으로 가는데

두번째 보낼때는 메세지가 안갑니다.

뭐가 잘못되었는지 도저히 모르겠네요...흑흑



메세지보내고 받는것은 TMemo에 넣었습니다.

아시는분 회신 주십시요...



---> Client

function TTcpSend.StringsSend (TCPClient: tidtcpclient; Ip: String; Mess: TStrings) : Boolean;

var

sRecv : String;

begin

TcpCommon.ClientSocketInit(TCPClient, Ip);



with TCPClient do

begin

Connect;

while Connected do

begin

try

WriteLn(MESS_STRINGS+TCPClient.LocalName);

sRecv := ReadLn;

if Pos(MESS_OK, sRecv) = 0 then Break;



OpenWriteBuffer;

WriteStrings(Mess);

CloseWriteBuffer;

// Disconnect;

finally

Disconnect;

// StringsSend := False;

end;

end;

// Disconnect;

end;



StringsSend := True;

end;

---> Server

procedure TFTcp.TCPServerExecute(AThread: TIdPeerThread);

var

sRecv : String;

sSendUser : String;

sStream : TStringStream;

i : Integer;

begin

with AThread.Connection do

begin

try

sRecv := ReadLn;

sSendUser := '보낸이 : '+Copy(sRecv, MESS_LEN + 1, length(sRecv) - MESS_LEN);



if Copy(sRecv, 1, MESS_LEN) = MESS_STRINGS then

begin

WriteLn(MESS_OK);



sStream := TStringStream.Create('');

ReadStream(sStream, -1, True);

sStream.Seek(0, soFromBeginning);



RecvMess.Lines.LoadFromStream(sStream);

sStream.Free;



// RecvEdit.Lines.LoadFromStream(sStream);

for i:=0 to RecvMess.Lines.Count - 1 do

begin

if i = 0 then RecvEdit.Lines.Add(sSendUser);



RecvEdit.Lines.Add(RecvMess.Lines.Strings[i]);

end;

end

else if Copy(sRecv, 1, MESS_LEN) = MESS_MESSAGE then

begin

WriteLn(MESS_OK);

sRecv := ReadLn;

RecvEdit.Lines.Add(sSendUser);

RecvEdit.Lines.Add(sRecv);

end

else begin

end;



finally

Disconnect;

end;



// Disconnect;

end;

end;

0  COMMENTS