哪位大侠给一个TCP异步通信的delphi实现例子,谢谢啦,100分 (100分)

  • 主题发起人 主题发起人 RoninHao
  • 开始时间 开始时间
给你推荐一本书吧
<windows网络编程技术>第二版
 
下面是第一版的电子版:
http://www.vckbase.com/tools/downtools.asp?id=43
 
下面是一个编译过的程序
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Close;
ServerSocket1.Close;
ServerSocket1.Open;
ClientSocket1.Open;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Buf : array [0..9] of real;
i : integer;
begin
for i:=0 to 9 do
begin
Buf := 0.05 + i;
Memo1.Lines.Add(FloatToStr(Buf));
end;
i := Length(Buf);
if ServerSocket1.Active then
ServerSocket1.Socket.Connections[0].SendBuf(Buf,i*SizeOf(real));
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Buffer : array [0..19] of real;
i,m : integer;
begin
for i:=0 to 19 do
Buffer := 0;
m := Socket.ReceiveLength;
Socket.ReceiveBuf(Buffer,m);
m := m div SizeOf(real);
for i:=0 to m-1 do
Memo2.Lines.Add(FormatFloat('0.00',Buffer));
end;

end.
 
呵呵,这玩意好象不是太难,想要混乱数据呢,就别去互斥,想要规则数据呢,你就互斥那个零界就好了....
 
我建立了一个临界区,当我第一次发送query,接受在socket上进行数据的来回传送,然后再发一个query,那时候就出现问题了,数据会混乱,发一个query然后来回传送数据是好的,如果来消除这个问题呀
我用的是非阻塞的
 
多人接受答案了。
 
后退
顶部