Socket的问题,高手速速入内!(200分)

  • 主题发起人 主题发起人 pingpingniu
  • 开始时间 开始时间
to dragonki :
我的定时器一直就没有关过!
to tianhf :
服务端试我做的,绝对没有停止接收!
我不停的开关时可以接收到多条回执的!
你在你的机器上试过吗?我还是只发一条
就停了!你看我的程序问题吗?
 
把服务器端的 exe 文件寄给我 win98_123@263.net
 
不用发,很简单,就两句话!发的和收的都是结构!
procedure TForm1.ssktTestClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.ReceiveBuf(SendInfo, SizeOf(SendInfo));
Socket.SendBuf(ReceiveInfo, SizeOf(ReceiveInfo));
end;
 
有趣!!!! 注销我的 timer1timer 中的
if not haveRecv then exit;//没有接收到数据,等待下一个时钟周期

启动网络监视器!!! 启动客户程序,在网络监视器中你将发现收发一切正常,客户的每一个发送都被回复!!!!!
只是没有触发 ClientSocket1Read 晕了晕了!!!!!!
 
知道我的苦衷了吧? ^o*
那是不是只有不停的连断了呢?
现在我想我当初为什么到一定的时候就停止收发了,可能是
因为收到的东西没有释放掉,堆积在内存中。有没有办法释放
掉收到的东西?
 
我也被你搞糊涂了,但是下面的程序我调试通过了,你原封不动粘上试试!!!
unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, Buttons, ScktComp, ExtCtrls, ComCtrls;

type
TChatForm = class(TForm)
ClientSocket: TClientSocket;
Edit1: TEdit;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Disconnect1Click(Sender: TObject);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure Timer1Timer(Sender: TObject);
protected
IsServer: Boolean;
end;

var
ChatForm: TChatForm;
Server: String;
count:integer;
implementation

{$R *.DFM}

procedure TChatForm.FormCreate(Sender: TObject);
begin
clientsocket.Active := True;
count:=0;
end;

procedure TChatForm.Disconnect1Click(Sender: TObject);
begin
ClientSocket.Close;
end;

procedure TChatForm.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
inc(count);
edit1.text:=format('%d %s ',[count,Socket.ReceiveText]);
end;

procedure TChatForm.Timer1Timer(Sender: TObject);
begin
clientSocket.Socket.SendText('aaa');
end;

end.
 
我现在正在运行这个程序,一切正常!
非常谢谢你!
 
接受答案了.
 
后退
顶部