客户端:type
TMyData=record
id:integer;
sName:array[0..3] of char;
end;
var
mydata:TMydata;
begin
mydata.sName := 'ABCD';
IdTCPClient1.WriteBuffer(mydata,sizeof(mydata));
Memo1.Lines.Add(mydata.sName);
//IdTCPClient1.ReadBuffer(mydata,sizeof(mydata));
//Memo1.Lines.Add(mydata.sName);
end;
服务端:type
TMyData=record
id:integer;
sName:array[0..3] of char;
end;
var
mydata:TMydata;
begin
mydata.sName := 'ABCD';
IdTCPClient1.WriteBuffer(mydata,sizeof(mydata));
Memo1.Lines.Add(mydata.sName);
//IdTCPClient1.ReadBuffer(mydata,sizeof(mydata));
//Memo1.Lines.Add(mydata.sName);
end;现在这样子是没问题的,可是我把注释打开,即服务端马上回信息,就有问题,服务端收不到任何内容我再改一下:type
TMyData=record
id:integer;
sName:array[0..3] of char;
end;
var
mydata:TMydata;
begin
mydata.sName := 'ABCD';
IdTCPClient1.WriteBuffer(mydata,sizeof(mydata));
Memo1.Lines.Add(mydata.sName);
Sleep(5000);
//IdTCPClient1.ReadBuffer(mydata,sizeof(mydata));
//Memo1.Lines.Add(mydata.sName);
end;为何服务端,是在客户端Sleep(5)之后才收到内容呢?难道不能发送完就读取吗?
TMyData=record
id:integer;
sName:array[0..3] of char;
end;
var
mydata:TMydata;
begin
mydata.sName := 'ABCD';
IdTCPClient1.WriteBuffer(mydata,sizeof(mydata));
Memo1.Lines.Add(mydata.sName);
//IdTCPClient1.ReadBuffer(mydata,sizeof(mydata));
//Memo1.Lines.Add(mydata.sName);
end;
服务端:type
TMyData=record
id:integer;
sName:array[0..3] of char;
end;
var
mydata:TMydata;
begin
mydata.sName := 'ABCD';
IdTCPClient1.WriteBuffer(mydata,sizeof(mydata));
Memo1.Lines.Add(mydata.sName);
//IdTCPClient1.ReadBuffer(mydata,sizeof(mydata));
//Memo1.Lines.Add(mydata.sName);
end;现在这样子是没问题的,可是我把注释打开,即服务端马上回信息,就有问题,服务端收不到任何内容我再改一下:type
TMyData=record
id:integer;
sName:array[0..3] of char;
end;
var
mydata:TMydata;
begin
mydata.sName := 'ABCD';
IdTCPClient1.WriteBuffer(mydata,sizeof(mydata));
Memo1.Lines.Add(mydata.sName);
Sleep(5000);
//IdTCPClient1.ReadBuffer(mydata,sizeof(mydata));
//Memo1.Lines.Add(mydata.sName);
end;为何服务端,是在客户端Sleep(5)之后才收到内容呢?难道不能发送完就读取吗?
begin
IdTCPClient1.ReadBuffer(mydata,sizeof(mydata));
end;
var
Len: Word;
Msg: String;
begin
Len := Length(Edit1.Text);
Msg := Edit1.Text;
//IdTCPClient1.WriteBuffer(Len, 2);
//Memo1.Lines.Add(IntToStr(Len));
IdTCPClient1.WriteBuffer(Msg, Len);
Memo1.Lines.Add(Msg);
//IdTCPClient1.ReadBuffer(Len, 2);
//Memo1.Lines.Add(IntToStr(Len));
//IdTCPClient1.ReadBuffer(Msg, Len);
//Memo1.Lines.Add(Msg);
end;procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
Len: Word;
Msg: String;
begin
with AThread.Connection do
begin
//ReadBuffer(Len, 2);
//Memo2.Lines.Add(IntToStr(Len));
ReadBuffer(Msg, 5);
Memo2.Lines.Add(Msg);
//Msg := 'Echo';
//Len := Length(Msg);
//WriteBuffer(Len, 2);
//Memo2.Lines.Add(IntToStr(Len));
//WriteBuffer(Msg, Len);
//Memo1.Lines.Add(Msg);
end;
end;这一对程序,客户端只能发一次,发第二次,服务端就收不到,然后就出错了,为什么啊?