各位老大好,这个问题困扰了很长时间,给点建议,万分感谢
现象:
启动服务器端
启动客户端,这时发送接收正常
连接着关闭服务器端,然后客户端发送的第一条数据不提示错误
从第二条才提示,可以确定客户端没有问题,这应该是那里出错呢?
关闭服务器端看到端口没有立即关闭,这影响到客户端发送的第一条数据吗?
有没有可能关闭服务的同时直接关闭端口
服务器端关闭服务代码:
procedure TTodayForm.StopServer;
var
List: TList;
Count: Integer;
AThread: TIdPeerThread;
begin
if TCPS.Active then
begin
List := TCPS.Threads.LockList;
try
for Count := 0 to List.Count - 1 do
try
AThread := TIdPeerThread(List.Items[Count]);
AThread.Connection.Disconnect;
except
end;
finally
TCPS.Threads.UnlockList;
end;
TCPS.Active := False;
TCPS.Bindings.Clear;
end;
end;发现indy9的demo中basic server就没有这样的问题,看不出什么特别的地方
function TfrmMain.StopServer: Boolean;
begin
IdTCPServer.Active := false;
IdTCPServer.Bindings.Clear;
Result := not IdTCPServer.Active;
fServerRunning := result;
if result then
begin
StatusBar.SimpleText := 'Server stopped';
lbProcesses.Items.Append('Server stopped');
end
else
begin
StatusBar.SimpleText := 'Server running';
lbProcesses.Items.Append('Server not stopped');
end;
end;
现象:
启动服务器端
启动客户端,这时发送接收正常
连接着关闭服务器端,然后客户端发送的第一条数据不提示错误
从第二条才提示,可以确定客户端没有问题,这应该是那里出错呢?
关闭服务器端看到端口没有立即关闭,这影响到客户端发送的第一条数据吗?
有没有可能关闭服务的同时直接关闭端口
服务器端关闭服务代码:
procedure TTodayForm.StopServer;
var
List: TList;
Count: Integer;
AThread: TIdPeerThread;
begin
if TCPS.Active then
begin
List := TCPS.Threads.LockList;
try
for Count := 0 to List.Count - 1 do
try
AThread := TIdPeerThread(List.Items[Count]);
AThread.Connection.Disconnect;
except
end;
finally
TCPS.Threads.UnlockList;
end;
TCPS.Active := False;
TCPS.Bindings.Clear;
end;
end;发现indy9的demo中basic server就没有这样的问题,看不出什么特别的地方
function TfrmMain.StopServer: Boolean;
begin
IdTCPServer.Active := false;
IdTCPServer.Bindings.Clear;
Result := not IdTCPServer.Active;
fServerRunning := result;
if result then
begin
StatusBar.SimpleText := 'Server stopped';
lbProcesses.Items.Append('Server stopped');
end
else
begin
StatusBar.SimpleText := 'Server running';
lbProcesses.Items.Append('Server not stopped');
end;
end;
解决方案 »
- 大虾们,有谁有SOCKET方面的代码
- 定义类,怎么调用类事件?
- 求助,如何在delphi中添加TCP socket 组件
- Access+ADO的问题!幼稚的问题
- Combobox 属性问题
- 如何才能让Form返回值?请诊断一段代码:
- socket多线程传输文件 急用!
- 关于对listbox上的数据处理方式,请指点,猴急!
- 如何使窗体上的两个RealAudio控件同时播放视频,解决了就给分。
- 一个很简单的问题:有什么容器可以让当在它内部的控件超出它的范围的时候出现滚动条?
- c++builder版的问题,请高手解答TNMPOP3连接异常该怎么处理?
- 在綫等!關於存儲過程的小問題。BDE 希望指點!
难道不是tidtcpserver,是客户端问题?
可是indy9的demo中BasicClientServer目录下的client连接basic server没问题,
连接我的服务器端就有问题,奇怪