各位大侠;
请帮我 把这个问题解决,我等着急用,明天就要交任务了,谢谢!!
1.从客户端这边发数据到服务器那边,三秒发一次,如果服务器收到消息,就发任一条消息,如果服务器没有收到消息,客户端连续发5次,5次服务器没有收到消息就不在发,关于时间我在设置TTimer的interval属性设置为3000,在timer的事件中循环5次不是知道怎样控制。我如何判断数据在服务器上接受到数据,怎样把他现实,请看一下我写的代码:
var
flag_s:integer; // 定义一个全局变量 ,次数
procedure TForm1.fs; 定义一个过程,把发送消息保存在本地的LOG文件里
begin
flag_s:=1;
ClientSocket.Open;
ClientSocket.Socket.SendText(trim(edit1.text));
flag_s:=Form1.flag_s+1; //每次次数都进行增加:
end;
procedure TForm1.ClientSocketRead(Sender: TObject; Socket:TCustomWinSocket);
var
strread:string;
beginstrread:=Socket.ReceiveText;
Memo1.Lines.Add('服务器返回消息:'+strread);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
//我不知道这里怎样控制次数和服务器接受到数据就不在发这条消息,应该发下条数据。
begin
if flag_s<5 then // 控制次数
fs
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
begin
fs; //当我点两次就反映了一次,不知是什么原因。
end;
补充以下,我发送的记录是这样的 ,我先发一条记录,如果服务器有响应的话就不发了,退出,如果没有响应的话就继续发,发到5次就不发了,请高手帮我看一下代码。我等着急用,明天交任务了,我还是第一接触SOCKET
请帮我 把这个问题解决,我等着急用,明天就要交任务了,谢谢!!
1.从客户端这边发数据到服务器那边,三秒发一次,如果服务器收到消息,就发任一条消息,如果服务器没有收到消息,客户端连续发5次,5次服务器没有收到消息就不在发,关于时间我在设置TTimer的interval属性设置为3000,在timer的事件中循环5次不是知道怎样控制。我如何判断数据在服务器上接受到数据,怎样把他现实,请看一下我写的代码:
var
flag_s:integer; // 定义一个全局变量 ,次数
procedure TForm1.fs; 定义一个过程,把发送消息保存在本地的LOG文件里
begin
flag_s:=1;
ClientSocket.Open;
ClientSocket.Socket.SendText(trim(edit1.text));
flag_s:=Form1.flag_s+1; //每次次数都进行增加:
end;
procedure TForm1.ClientSocketRead(Sender: TObject; Socket:TCustomWinSocket);
var
strread:string;
beginstrread:=Socket.ReceiveText;
Memo1.Lines.Add('服务器返回消息:'+strread);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
//我不知道这里怎样控制次数和服务器接受到数据就不在发这条消息,应该发下条数据。
begin
if flag_s<5 then // 控制次数
fs
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
begin
fs; //当我点两次就反映了一次,不知是什么原因。
end;
补充以下,我发送的记录是这样的 ,我先发一条记录,如果服务器有响应的话就不发了,退出,如果没有响应的话就继续发,发到5次就不发了,请高手帮我看一下代码。我等着急用,明天交任务了,我还是第一接触SOCKET
procedure TForm1.Button1Click(Sender: TObject);
begin
flag_s := 0;
fs; //当我点两次就反映了一次,不知是什么原因。
end;
问题还是没有解决了
flag_s:integer;procedure TForm1.FormCreate(Sender: TObject);
begin
flag_s:=1;
Timer1.Interval := 1000;
Timer1.Enabled := True;
end;procedure TForm1.fs;
begin
ClientSocket.Open;
ClientSocket.Socket.SendText(trim(edit1.text));
flag_s:=Form1.flag_s+1;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if flag_s < 5 then
fs
else
Timer1.Enabled := False;
end;procedure TForm1.ClientSocketRead(Sender: TObject; Socket:TCustomWinSocket);
var
strread:string;
begin
strread:=Socket.ReceiveText;
Memo1.Lines.Add('服务器返回消息:'+strread);
flag_s:=1;
end;end.
请帮我 把这个问题解决,我等着急用,明天就要交任务了,谢谢!!
1.从客户端这边发数据到服务器那边,三秒发一次,如果服务器收到消息,就发任一条消息,如果服务器没有收到消息,客户端连续发5次,5次服务器没有收到消息就不在发,关于时间我在设置TTimer的interval属性设置为3000,在timer的事件中循环5次不是知道怎样控制。我如何判断数据在服务器上接受到数据,怎样把他现实,请看一下我写的代码:
var
flag_s:integer; // 定义一个全局变量 ,次数procedure TForm1.fs; 定义一个过程,把发送消息保存在本地的LOG文件里
var
TextFileVar: Textfile;
SourcePath:string;
begin
flag_s:=1;
SourcePath := ExtractFileDir(Application.ExeName);
SourcePath:=SourcePath+'\'+'ReceiveStr.log';
ClientSocket.Open;
ClientSocket.Socket.SendText(trim(edit1.text));
flag_s:=Form1.flag_s+1; //每次次数都进行增加:
AssignFile(TextFileVar,SourcePath);
Append(TextFileVar);
write(TextFileVar,#13);
write(TextFileVar,'client send:');
write(TextFileVar,trim(Form1.edit1.text));
write(TextFileVar,' ');
write(TextFileVar,datetimetostr(now()));
closefile(TextFileVar);
end;procedure TForm1.ClientSocketRead(Sender: TObject; )//把服务器返回的消息写在本地的log文件里。
Socket: TCustomWinSocket);
var
TextFileVar: Textfile;
SourcePath, strread:string;
begin
SourcePath := ExtractFileDir(Application.ExeName);
SourcePath:=SourcePath+'\'+'ReceiveStr.log';
strread:=Socket.ReceiveText;
AssignFile(TextFileVar,SourcePath);
Append(TextFileVar);
write(TextFileVar,#13);
write(TextFileVar,'ServerReturn:');
write(TextFileVar,strread);
write(TextFileVar,' ');
write(TextFileVar,datetimetostr(now()));
closefile(TextFileVar);
Memo1.Lines.Add('服务器返回消息:'+strread);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
//我不知道这里怎样控制次数和服务器接受到数据就不在发这条消息,应该发下条数据。
begin
if flag_s<5 then // 控制次数
fs
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
begin
fs; //当我点两次就反映了一次,不知是什么原因。
end;
请帮我 把这个问题解决,我等着急用,明天就要交任务了,谢谢!!
1.从客户端这边发数据到服务器那边,三秒发一次,如果服务器收到消息,就发任一条消息,如果服务器没有收到消息,客户端连续发5次,5次服务器没有收到消息就不在发,我如何判断在客户端接受到服务器上的数据,怎样把他实现,循环5次现在实现了,,请看一下我写的代码:
var
flag_s:integer;procedure TForm1.FormCreate(Sender: TObject);
begin
flag_s:=1;
Timer1.Interval := 1000;
Timer1.Enabled := True;
end;procedure TForm1.fs;
begin
ClientSocket.Open;
ClientSocket.Socket.SendText(trim(edit1.text));
flag_s:=Form1.flag_s+1;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if flag_s < 5 then
fs
else
Timer1.Enabled := False;
end;procedure TForm1.ClientSocketRead(Sender: TObject; Socket:TCustomWinSocket);
var
strread:string;
begin
strread:=Socket.ReceiveText;
Memo1.Lines.Add('服务器返回消息:'+strread);
flag_s:=1;
end;
end.